我想测试一个字符串是否存在于defaultdict的任何列表值中。
例如:
from collections import defaultdict
animals = defaultdict(list)
animals['farm']=['cow', 'pig', 'chicken']
animals['house']=['cat', 'rat']
我想知道“牛”是否出现在动物的任何一个清单中。
'cow' in animals.values() #returns False
对于像这样的情况,我想要一些会返回“True”的东西。是否相当于:
'cow' in animals.values()
对于defaultdict?
谢谢!
答案 0 :(得分:12)
defaultdict与常规字典没有什么不同。您需要迭代字典中的值:
any('cow' in v for v in animals.values())
或更多程序性:
def in_values(s, d):
"""Does `s` appear in any of the values in `d`?"""
for v in d.values():
if s in v:
return True
return False
in_values('cow', animals)
答案 1 :(得分:0)
any("cow" in lst for lst in animals.itervalues())
答案 2 :(得分:-1)
此示例将展平列表,检查每个元素并返回True或False,如下所示:
>>> from collections import defaultdict
>>> animals = defaultdict(list)
>>> animals['farm']=['cow', 'pig', 'chicken']
>>> animals['house']=['cat', 'rat']
>>> 'cow' in [x for y in animals.values() for x in y]
True