2015-10-12 19 views
10

Ich versuche, ein Skalarprodukt der Werte von zwei Wörterbüchern zu tun. Zum Beispiel:Dot Produkt mit Wörterbüchern

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

In Listenform sieht das oben wie folgt aus:

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

Das Skalarprodukt des Wörterbuchs mit dem gleichen Schlüssel in ergäbe:

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

Wie kann Ich erreiche das mit dem Wörterbuch? Mit der Liste kann ich einfach die np.dot Funktion aufrufen oder eine kleine Schleife schreiben.

Antwort

17

Verwenden Summenfunktion auf Liste durch Iterierte dict_1 Schlüssel in Paar mit get produziert() Funktion gegen dict_2:

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