所以我有一个像这样的列表字典:
dct = {'1': ['hello','goodbye'], '2': ['not here','definitely not here']}
检查是否'你好'最快的方法是什么?在我的词典中的一个列表中
答案 0 :(得分:6)
正如Willem Van Onsem评论的那样,实现这一目标的最简单方法是:
any('hello' in val for val in dct.values())
如果给定迭代中的任何值都是真的, any
将返回True。
dct.values()
返回一个dict_values
迭代,它会产生字典中的所有值。
'hello' in val for val in dct.values()
是一个生成器表达式,为True
所在的dct
的每个值产生'hello'
。
如果你想知道字符串所在的键,你可以这样做:
keys = [key for key, value in dct.items() if 'hello' in value]
在您的情况下,keys
将为['1']
。如果你仍然这样做,你可以在布尔上下文中调用use列表,例如if keys: ...
。