检查dict中是否至少包含一个dict键

Igl*_*gle 2 python validation dictionary

我想检查另一个字典中是否有至少一个来自给定字典的密钥.我已经知道如何检查"必须"这样的键:

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)
Run Code Online (Sandbox Code Playgroud)

数据在这里是一个dicts列表.使用此代码,只有包含key1和key2的项目才会附加到valid_data.

是否有类似的东西:

if not any(key in d for key in needed_keys)
Run Code Online (Sandbox Code Playgroud)

如果所需的密钥中有任何密钥可用,它也会成功吗?

Mar*_*ers 6

使用集合交集:

needed_keys = {key1, key2}

for d in data:
    if needed_keys.intersection(d):
        valid_data.append(d)
Run Code Online (Sandbox Code Playgroud)

如果在needed_keys集合和字典之间没有共享密钥,则交集仅为空.

请注意,您的any(...)功能也可以工作,只是没有设置交叉选项那么有效; 也许你没有意识到这个any()功能确实存在?