我有一个固定的字符串列表。我需要检查这些字符串中的任何一个是否是字典中的键(只需要True或False)。我可以去
if 'asdf' in dict or 'qwer' in dict or 'zxcv' in dict ... : ... do important secret stuff ...
但似乎不是最理想的。有没有更惯用的方法呢?
答案 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--