2015-10-12 16 views
10

İki sözlükten oluşan noktaların nokta çarpımını yapmaya çalışıyorum. Örneğin:Sözlük ile Dot ürün

liste formunda
dict_1={'a':2, 'b':3, 'c':5, 'd':2} 
dict_2={'a':2, 'b':2, 'd':3, 'e':5 } 

, yukarıda şuna benzer:

Ans= 16 [2*2 + 3*2 + 5*0 + 2*3 + 0*5] 

Nasıl:

dict_1=[2,3,5,2,0] 
dict_2=[2,2,0,3,5] 

aynı anahtarla sözlüğün nokta ürünü neden olacaktır Bunu sözlükle başardım mı? Listeyle, sadece np.dot işlevini çağırabilir veya küçük bir döngü yazabilirim. dict_2 karşı get çift yinelerler dict_1 tuşları aracılığıyla üretilen listede

cevap

17

Kullanım toplamı function() fonksiyonu:

dot_product = sum(dict_1[key]*dict_2.get(key, 0) for key in dict_1)