即使键不同,我如何获得两个词典共有的值?

时间:2017-01-13 22:37:22

标签: python dictionary

从两个不同的词典开始:

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]

3 个答案:

答案 0 :(得分: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()次呼叫。

答案 1 :(得分:4)

试试这个,

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

答案 2 :(得分:2)

交集表达式&需要2个集合,但是对应的方法可以使用任何可迭代的表达式,例如dict.values。所以这是Martijn Pieters解决方案的另一个版本:

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

我的2美分:)