Python:测试defaultdict列表中是否存在值

Jak*_*ake 2 python collections dictionary list

我想测试一个字符串是否存在于defaultdict的任何列表值中.

例如:

from collections import defaultdict  
animals = defaultdict(list)  
animals['farm']=['cow', 'pig', 'chicken']  
animals['house']=['cat', 'rat']
Run Code Online (Sandbox Code Playgroud)

我想知道"牛"是否出现在动物的任何一个清单中.

'cow' in animals.values()  #returns False
Run Code Online (Sandbox Code Playgroud)

对于像这样的情况,我想要一些会返回"True"的东西.有相当于:

'cow' in animals.values()  
Run Code Online (Sandbox Code Playgroud)

对于defaultdict?

谢谢!

Ned*_*der 12

defaultdict与本例中的常规字典没有什么不同.您需要迭代字典中的值:

any('cow' in v for v in animals.values())
Run Code Online (Sandbox Code Playgroud)

或更多程序性地:

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)
Run Code Online (Sandbox Code Playgroud)