合并两个具有相同键值对的字典

3

我知道这可以用列表完成,但我只是想找出如何使用字典来实现。

基本上,步骤如下:

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}

我只想将值相同的键添加到一个新字典中。

有帮助吗?


参见:https://dev59.com/CmMl5IYBdhLWcg3wP1HE#18554039 - Brian Cain
2个回答

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,你只需要使用 items:

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

dict1.items() & dict2.items() 返回一个由两个字典共有的键/值对组成的集合:

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

然后我们只需在其上调用字典构造函数即可。

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}

这应该会稍微快一点,但对于普通字典来说并不重要。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接