Python - 在所有字典值中查找类似的东西

时间:2012-03-26 17:14:26

标签: python python-2.7

假设我有一本字典:

mydict = {'first': ['cat', 'dog'], 'second': ['fish', 'cat']}

有什么东西可以归还'猫'吗? 我正在使用Python 2.7。

5 个答案:

答案 0 :(得分:8)

请参阅set.intersection()的文档,它对于查找序列中的常见元素非常有用,您可以使用a & b和{{1}中的方法或语法a是集合。

这是一种简洁的方式来做你想要的事情:

b

使用>>> set.intersection(*map(set, mydict.values())) set(['cat']) 的可能更具可读性的解决方案:

reduce()

答案 1 :(得分:3)

mydict = {'first': ['cat', 'dog'], 'second': ['fish', 'cat']}
def similar(x,y):return [c for c in set(x).intersection(set(y))]
reduce(similar, mydict.values())

答案 2 :(得分:1)

>>> mydict = {'first': ['cat', 'dog'], 'second': ['fish', 'cat']}
>>> from collections import Counter
>>> c = Counter(i for v in mydict.values() for i in v)
>>> print [i for i in c if c[i]==len(mydict)]
['cat']

答案 3 :(得分:1)

另一种方式:

first = True
for x in mydict:
    if first:
        common = set(mydict[x])
        first = False
    else:
        common = common & set(mydict[x])
print common

答案 4 :(得分:1)

l2=[x for x in mydict.values()] 
dic = {}
for e in l2:
    for i in e:
        dic.setdefault(i,0)
        dic[i]+=1
for e in dic.items():
    if len(l2) == e[1]:
        print e[0] # cat