Python: 测试值是否存在于defaultdict列表中
我想测试一个字符串是否出现在一个默认字典中的任何列表值里。
比如说:
from collections import defaultdict
animals = defaultdict(list)
animals['farm']=['cow', 'pig', 'chicken']
animals['house']=['cat', 'rat']
我想知道'cow'这个词是否出现在动物这个字典里的任何列表中。
'cow' in animals.values() #returns False
我希望能得到一个结果,如果有这种情况,就返回“True”。有没有类似的东西:
'cow' in animals.values()
适用于默认字典的?
谢谢!
3 个回答
-1
这个例子会把列表变成一维的,检查每个元素,然后返回真或假,具体如下:
>>> 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
0
在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常需要把它们转换成程序可以处理的格式。
比如说,如果我们从一个文件中读取了一些文本数据,程序可能需要把这些文本转换成数字或者其他类型的数据,这样才能进行计算或者其他操作。
这个过程叫做“数据转换”。在不同的编程语言中,数据转换的方式可能会有所不同,但基本的思路都是一样的:把一种类型的数据变成另一种类型,以便程序能够使用。
在进行数据转换时,我们还需要注意数据的有效性和安全性,确保转换后的数据是正确的,不会导致程序出错。
any("cow" in lst for lst in animals.itervalues())
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)