将字典转换为列表,其中对任何重复键的值求和

Convert dictionary to a list where values are summed for any repeated key

我是 python 的新手,正在处理一项作业,我需要将字典转换为列表,在列表中对重复键的值求和。

我使用字典理解将字典转换为压缩字典,但努力将条件语句添加到 return 重复键的求和值。感谢有人能指出我正确的方向。

d1 = {'inds': [0, 3, 7, 3, 3, 5, 1], 'vals': [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]}

d2 = {k:v for k,v in zip(d1["inds"],d1["vals"])}
print(d2)

你可以这样一行完成:

from itertools import compress  
d2 = dict((k, sum(compress(d1['vals'], (x == k for x in d1['inds'])))) for k in set(d1['inds']))

然而,它并不是那么直观。我希望有人能提出更好的答案:)