Python3单线验证字典值中项目的存在

时间:2018-06-26 07:30:25

标签: python python-3.x dictionary

我正在寻找一种可能的方式来返回等价物

'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。

2 个答案:

答案 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