从两个不同的词典开始:
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]
答案 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美分:)