我正在寻找一种可能的方式来返回等价物
'A' in ['A', 'B', 'C']
,但在以下情况下: 假设我有一个包含列表作为值的字典,例如:
dictionary = {'key1': ['A', 'B', 'C', 'D'],
'key2': ['E', 'F'],
'key3': ['G', 'H', 'I']}
到目前为止,我能得到的最接近的东西是:
r = {v[0] for k, v in dictionary.items() if 'A' in v}
但是,这将返回一组长度为0或1的值,并返回要检查其是否存在的列表元素。
关于在字典值中存储的任何列表中是否存在“ A”,我只想获得True / False。
答案 0 :(得分:7)
您需要any()
内置函数:
any('A' in v for v in dictionary.values())
any()
本身是最佳的,因为遇到真正的命题后立即返回True
,但是如果您想提高性能,可以使用set
对象而不是列表保留值以进行成员资格检查是线性的。
答案 1 :(得分:0)
如果即使在找到匹配项后仍希望停止迭代所有dict值,请使用itertools.takewhile
import itertools
if list(itertools.takewhile(lambda v: 'J' in v, dictionary.values())):
# Found
else:
# Not found