在python中是否有办法检查任何字典元素是否在特定键上具有特定值,而不是遍历整个字典?
因此,在以下示例中:
[{
"ID": "1",
"Name": "Bob",
},
{
"Id": "2",
"Name": "Dave",
},
{
"Id": "3",
"Name": "Dave",
}]
如果有任何名为'Dave'的元素,我想得到一个真/假答案
答案 0 :(得分:7)
您的数据结构不支持O(1)
次查找,因此您仍然需要遍历它:
any(d['Name'] == 'Dave' for d in dicts)
将生成器传递到any
会使其短路,因此一旦找到元素就会停止。
如果您需要经常这样做,可以将所有项目合并到一个查找表中:
from collections import defaultdict
total = defaultdict(set)
for d in dicts:
for key, value in d.items():
total[key].add(value)
现在,您可以执行O(1)
次查找:
'Dave' in total['Name']
答案 1 :(得分:1)
试试这个:"Dave" in d.values()
其中d
是你的字典。
由于您有一个词典列表,请尝试:
any(d.get("Name") == "Dave" for d in my_dicts)
。如果其中一个词典没有键"Name"
,则会处理它(它会返回None
和None != "Dave"
)。