簡體   English   中英

檢查dict中是否至少包含一個dict鍵

[英]Check if at least one key of dict is contained in another dict

我想檢查給定字典中的至少一個鍵在另一個字典中是否可用。 我已經知道如何檢查“必須”這樣的鍵:

valid_data = []
needed_keys = (key1, key2)

for d in data:
    if not all(key in d for key in needed_keys):
        continue  # ignore invalid object

    valid_data.append(d)

這里的數據是字典列表。 使用此代碼,只有包含key1和key2的項目才會附加到valid_data。

是否有類似的東西:

if not any(key in d for key in needed_keys)

如果所需的密鑰中有任何密鑰可用,它也會成功嗎?

使用集合交集

needed_keys = {key1, key2}

for d in data:
    if needed_keys.intersection(d):
        valid_data.append(d)

如果在needed_keys集和字典之間沒有共享密鑰,則交集僅為空。

請注意,您的any(...)函數也可以工作,只是沒有設置交集選項那么有效; 也許你沒有意識到any()函數確實存在?

可以說你的數據是這樣的

>>> d1, d2 = {"a" : 1, "b" : 2, "c" : 3}, {"b" : 1, "c" : 2, "d" : 3}

首先,將所需的鍵定義為一組。 可以說,

>>> needed_keys = {"a", "b", "d"}

現在,您只需檢查字典鍵和needed_keys是否至少有一個共同的項目,使用set.isdisjoint設置操作,就像這樣

>>> [item for item in (d1, d2) if not needed_keys.isdisjoint(item)]

這將非常有效,因為如果找到單個公共元素,它將立即返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM