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

這應該是蠅頭纖細快一點,儘管這不會經常字典事。