检查字典中是否存在任何键列表

时间:2015-12-30 17:22:29

标签: python

我有一个固定的字符串列表。我需要检查这些字符串中的任何一个是否是字典中的键(只需要True或False)。我可以去

if 'asdf' in dict or 'qwer' in dict or 'zxcv' in dict ... :
    ... do important secret stuff ...

但似乎不是最理想的。有没有更惯用的方法呢?

3 个答案:

答案 0 :(得分:22)

您可以使用any并迭代您要检查的每个键

if any(key in dict for key in ['asdf', 'qwer', 'zxcf']):
    # contains at least one of them

这会在找到第一个匹配时发生短路并返回True,如果找不到则会返回False

答案 1 :(得分:5)

您也可以使用&

keys =  ['asdf', 'qwer', 'zxcf']
if d.keys() & keys:
    print(d)

python2需要d.viewkeys()

或者,将密钥设为set并查看该密钥是否不相交,这将是最快的方法:

keys =  {'asdf', 'qwer', 'zxcf'}

if not keys.isdisjoint(d):
    print(d)

答案 2 :(得分:1)

你可以尝试在python中使用list comprehension:

if any([True for entry in your_list if entry in dict]):
    --dostuff--
编辑:CoryKramer建议删除' []'为了使它成为一个生成器,而不是在检查是否有任何元素之前评估整个列表" True":

if any(True for entry in your_list if entry in dict):
    --dostuff--