2017-01-13 13 views
4

二つの異なる辞書最低料金:キーが異なる場合でも、2つの辞書に共通する値を取得するにはどうすればよいですか?

dict_a = {'a': 1, 'b': 3, 'c': 4, 'd': 4, 'e': 6} 
dict_b = {'d': 1, 'e': 6, 'a': 3, 'v': 7} 

は、どのように私は、彼らが異なるキーを持っている場合でも、共通の値を得ることができますか?上記の辞書を考えると、私はこの出力を持っているしたいと思います:

common = [1, 3, 6] 

答えて

6

値からセットを作成します。

list(set(dict_a.values()) & set(dict_b.values())) 

これは、辞書のいずれかで一意の値の交点を作成します。

>>> dict_a = {'a': 1, 'b': 3, 'c': 4, 'd': 4, 'e': 6} 
>>> dict_b = {'d': 1, 'e': 6, 'a': 3, 'v': 7} 
>>> list(set(dict_a.values()) & set(dict_b.values())) 
[1, 3, 6] 

残念ながら、辞書の値が一意である必要はないので、dictionary viewsを使用することはできません(これはセットのように動作します)。キーまたはキーと値のペアだけを要求していた場合は、set()コールは必要ありませんでした。

4

は、交差点の表現&は2セットが必要ですが、メソッドの対応がdict.valuesのように、任意の反復可能で動作することができます

commom = [item for item in dict_b.values() if item in dict_a.values()] 
+3

+ 1のおかげで、あなたのソリューションは、動作しますが、私はそれが@Martijnピータースによって提案されたものよりも遅くなることができると思います。 – mgri

2

、これを試してみてください。だからここマルタインピータースソリューションの別のバージョンである:

list(set(dict_a.values()).intersection(dict_b.values())) 

私の2セント:)

関連する問題