2016-03-06 211 views
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} 

所以我只想与加入到新字典的值相同的密钥。

任何帮助?

+0

另请参阅:http://stackoverflow.com/a/18554039/489590 –

回答

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

另一种方式来做到这一点是使用一个字典的理解:

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} 

这应该是蝇头纤细快一点,尽管这不会经常字典事。

相关问题