に似たものを探す:「猫」を返します。何かが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
のいずれかを使用することができます。ここで
あなたが欲しいものを行うための簡潔な方法である:
>>> set.intersection(*map(set, mydict.values()))
set(['cat'])
またはreduce()
を使用して、潜在的に、より読みやすいソリューション:
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-loopを使った関数が仕事をするべきだと思います。 –