点词产品与词典

Sam*_*Sam 10 python numpy

我试图做两个字典值的点积.例如:

dict_1={'a':2, 'b':3, 'c':5, 'd':2}
dict_2={'a':2, 'b':2, 'd':3, 'e':5 }
Run Code Online (Sandbox Code Playgroud)

在列表表单中,上面的内容如下所示:

dict_1=[2,3,5,2,0]
dict_2=[2,2,0,3,5]
Run Code Online (Sandbox Code Playgroud)

具有相同键的字典的点积将导致:

Ans= 16  [2*2 + 3*2 + 5*0 + 2*3 + 0*5]
Run Code Online (Sandbox Code Playgroud)

如何用字典实现这一目标?通过列表,我可以调用np.dot函数或编写一个小循环.

Eug*_*tov 18

使用通过迭代dict_1键生成的列表中的sum函数,以及对dict_2的get()函数:

dot_product = sum(dict_1[key]*dict_2.get(key, 0) for key in dict_1)
Run Code Online (Sandbox Code Playgroud)