假设我有一本字典:
mydict = {'first': ['cat', 'dog'], 'second': ['fish', 'cat']}
有什么东西可以归还'猫'吗? 我正在使用Python 2.7。
答案 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