Python3 oneliner验证字典值中是否存在项

2024-07-01 07:33:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一个可能的一班轮返回相当于

'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


Tags: infalsetrue元素列表fordictionaryif
2条回答

如果要在找到匹配项后停止对所有dict值的迭代,请使用itertools.takewhile

import itertools
if list(itertools.takewhile(lambda v: 'J' in v, dictionary.values())):
    # Found
else:
    # Not found

您需要^{}内置函数:

any('A' in v for v in dictionary.values())

any()在遇到真实命题时立即返回True这一点上本身是最佳的,但是如果您想进一步提高性能,可以使用set对象而不是列表来保留其成员资格检查的值是线性的

相关问题 更多 >

    热门问题