将字典转换为列表,其中任何重复键的值都将相加

时间:2019-01-19 00:59:41

标签: python-3.x dictionary dictionary-comprehension

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

我使用字典理解将字典转换为压缩字典,但努力添加条件语句以返回重复键的总和。欣赏是否有人可以指出我正确的方向。

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)

1 个答案:

答案 0 :(得分:0)

您可以像这样在一行中完成此操作:

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

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