すべてのキーに表示される辞書の値を抽出する方法を知りたいです。
たとえば、次の辞書があるとします。
d = {'a': [num_1, num_2], 'b': [num_1],
'c': [num_1,num_2, num_3]}
このインスタンスnum_1で、すべてのキーに存在する値を抽出したいと思います。
どうすればこれを達成できますか?
編集:共通の値をリストに保存するにはどうすればよいですか?
すべてのキーに表示される辞書の値を抽出する方法を知りたいです。
たとえば、次の辞書があるとします。
d = {'a': [num_1, num_2], 'b': [num_1],
'c': [num_1,num_2, num_3]}
このインスタンスnum_1で、すべてのキーに存在する値を抽出したいと思います。
どうすればこれを達成できますか?
編集:共通の値をリストに保存するにはどうすればよいですか?
次のようにします。
d = {'a': ['num_1', 'num_2'], 'b': ['num_1'], 'c': ['num_1', 'num_2', 'num_3']}
vals = d.values()
uniq = set(vals[0])
for lst in vals[1:]:
uniq.intersection_update(lst)
# now `uniq` holds the intersected values:
print uniq
> set(['num_1'])
# to get the result as a list:
uniq = list(uniq)
print uniq
> ['num_1']
すべての値をセットに変換し、それらの交点を取ります。
set.intersection(*(set(v) for v in d.values()))
私の奇妙な働き方
vals = [i for v in d.values() for i in v]
set([i for i in vals if vals.count(i) == len(d.values())])
list(set(d['a']) & set(d['c']) & set(d['b']))
これは役立つはずです