2013-03-11 2 views

답변

16

당신이 사용할 수있는 dict comprehension :

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

또는 사전 2.7 파이썬하는 generator expression와 조합 dict 생성자 : 내 전화에서

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

이것은 정말 고마워요! – AnonyMouse

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' 문을 사용한다고 가정하면, 파이썬 2.x에 대한 답을 의도 한 것 같습니다.'d2.keys() :'에''k ' 'd2'의 키가 모두 바깥 쪽 루프에 매번 들어있는 새로운리스트. 'd2 : k가 선호된다면. (for는'for' 루프에도 적용되지만, 한번 실행하면 문제가되지 않습니다.) – Duncan

+0

고마워요. –

+0

답변 해 주셔서 감사합니다! 그것은 아름답게 작동했습니다. – user2156072

0

, 그래서 비트 코드 입력이 어렵다. 이 트릭을해야합니다 :

for key, value in dict1.iteritems(): 
    if key in dict2: 
     dict3[key] = int(dict1[key]) * int(dict2[key]) 
관련 문제