2013-03-11 872 views
6

我有兩個單獨的字典,其中包含我想要一起乘以的鍵和值。值應該乘以它們所具有的鍵。在Python中將兩個不同字典的值相乘

dict1 = {'a': 1, 'b': 2, 'c': 3} 
dict2 = {'a': 15, 'b': 10, 'd': 17} 

dict3 = dict.items() * dict.items() 
print dict3 

#### #dict3 should equal 
{'a': 15, 'b': 20} 

如果有人可以幫助,那將是巨大的。 謝謝!

回答

16

您可以使用dict comprehension

>>> {k : v * dict2[k] for k, v in dict1.items() if k in dict2} 
{'a': 15, 'b': 20} 

或者,在前期2.7 Python中,dict構造組合與generator expression

>>> dict((k, v * dict2[k]) for k, v in dict1.items() if k in dict2) 
{'a': 15, 'b': 20} 
+0

這太神奇了,謝謝! – AnonyMouse 2016-06-24 20:56:17

0
dict1 = {'a': 1, 'b': 2, 'c': 3} 
dict2 = {'a': 15, 'b': 10, 'd': 17} 

def dict_mul(d1, d2): 
    d3 = dict() 
    for k in d1: 
     if k in d2: 
      d3[k] = d1[k] * d2[k] 
    return d3 

print dict_mul(dict1, dict2) 
+2

考慮到你使用'print'語句而不是函數,我認爲你打算爲Python 2.x提供答案,在這種情況下,它是一個糟糕的答案,因爲測試'如果k在d2.keys():'中會創建一個新的列表,每次包含外部循環的所有'd2'鍵。 '如果d2中的k'非常值得選擇。 (這同樣適用於'for'循環,但是隻有在執行完後纔會執行) – Duncan 2013-03-11 09:28:01

+0

非常感謝,我應該更多地考慮permorece。 – 2013-03-11 09:34:01

+0

感謝您的回答!這工作很好。 – user2156072 2013-03-11 11:07:40

0

從我的電話,所以位很難輸入代碼。這應該是訣竅:

for key, value in dict1.iteritems(): 
    if key in dict2: 
     dict3[key] = int(dict1[key]) * int(dict2[key]) 
相關問題