所以我有一个列表的字典,像这样:检查列表字典中是否有值的最佳方法?
dct = {'1': ['hello','goodbye'], '2': ['not here','definitely not here']}
什么是最快的方法来检查,如果“你好”是我的列表中的一个在我的字典
所以我有一个列表的字典,像这样:检查列表字典中是否有值的最佳方法?
dct = {'1': ['hello','goodbye'], '2': ['not here','definitely not here']}
什么是最快的方法来检查,如果“你好”是我的列表中的一个在我的字典
正如威廉·Onsem评论说,最简单的的实现方式是:
any('hello' in val for val in dct.values())
any
返回true如果任何给定的值的迭代是truthy。
dct.values()
返回一个dict_values
iterable,它将产生一个字典中的所有值。
'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']
。如果你这样做,那么你可以在布尔上下文中调用该列表,例如if keys: ...
。
谢谢你总结 – citizen2077
'任何('你好'val在val中的dct.values())''。 –
非常感谢!如果您作为答案提交,我可以接受并投票给您 – citizen2077
如果您颠倒了数据结构,这将会更有效率。 'dct = {'hello':1,'goodbye':1,'not here':2,'绝对不在这里':2}' - 这是一个恒定时间的搜索,而不是基于字典有多少项。 –