合并共享相同键的两个词典:值

时间:2016-03-06 17:45:25

标签: python python-3.x dictionary

我知道这可以通过列表完成,但我只想弄清楚如何使用词典来完成此操作。

基本上,它会是这样的:

dict1 = {'a': 10, 'b': 12, 'c': 9}
dict2 = {'a': 10, 'b': 3, 'c': 9}

def intersect(dict1, dict2):
    combinDict = dict()


....
print(combinDict)
{'a': 10, 'c':9}

所以我只希望将具有相同值的键添加到新词典中。

任何帮助?

2 个答案:

答案 0 :(得分:4)

你想要项目的交集

dict1 = {'a': 10, 'b': 12, 'c': 9}
dict2 = {'a': 10, 'b': 3, 'c': 9}

print dict(dict1.viewitems() & dict2.items())
{'a': 10, 'c': 9}

对于python 3,你只想使用项目:

 dict(dict1.items() & dict2.items())

dict1.items() & dict2.items()返回一组两个词组共有的键/值配对:

In [4]: dict1.viewitems() & dict2.items()
Out[4]: {('a', 10), ('c', 9)}

然后我们简单地调用dict构造函数。

答案 1 :(得分:1)

另一种方法是使用字典理解:

In [1]: dict1 = {'a': 10, 'b': 12, 'c': 9}

In [2]: dict2 = {'a': 10, 'b': 3, 'c': 9}

In [3]: {key: dict1[key] for key in dict1 if dict1[key] == dict2.get(key)}
Out[3]: {'a': 10, 'c': 9}

这应该是 teeny weeny 更快,但这对于常规字典并不重要。