假設我有一本字典:Python的 - 尋找類似的事情在所有的字典值
mydict = {'first': ['cat', 'dog'], 'second': ['fish', 'cat']}
是否有東西,將返回「貓」? 我正在使用Python 2.7。
假設我有一本字典:Python的 - 尋找類似的事情在所有的字典值
mydict = {'first': ['cat', 'dog'], 'second': ['fish', 'cat']}
是否有東西,將返回「貓」? 我正在使用Python 2.7。
查看的文檔set.intersection()
,用於尋找序列中共同的元件它非常有用的,並且可以使用任一方法或語法a & b
其中兩個a
和b
是集。
這裏是做你想要什麼簡潔的方式:或使用reduce()
>>> set.intersection(*map(set, mydict.values()))
set(['cat'])
潛在的更具可讀性的解決方案:
reduce(set.intersection, map(set, mydict.values()))
>>> 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']
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())
只是另一種方式:
first = True
for x in mydict:
if first:
common = set(mydict[x])
first = False
else:
common = common & set(mydict[x])
print common
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
我認爲帶for循環的函數應該能夠完成這項工作。 – 2012-03-26 17:18:51