2013-03-11 1364 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]) 
相关问题