Python 即使键不同,如何获取两个字典共有的值?

Python 即使键不同,如何获取两个字典共有的值?,python,dictionary,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] 根据以下值创建集合: list(set(dict_a.values()) & set(dict_b.values())) 这将在以下任一字典中创建唯一值的交集: >>> dict_a = {'a'

从两个不同的词典开始:

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]

根据以下值创建集合:

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]
不幸的是,我们不能在这里使用(它可以像集合一样工作),因为字典值不要求是唯一的。如果您只要求提供键或键值对,则不需要调用
set()

试试这个

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

交集表达式
&
需要2个集合,但方法对应项可以处理任何iterable,如dict.values。下面是Martijn Pieters解决方案的另一个版本:

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

我的2美分:)

+1谢谢,您的解决方案也可以,但我认为它可能比@Martijn Pieters提出的方案慢。