Python将先前的dict值添加到当前值

时间:2019-05-11 00:50:15

标签: python

让我们说我有这个元组列表(可能是长度n):

keysVals = [('one',10),('two',15),('three',20),('four',5)]

然后我可以从该列表创建字典:

for k,v in keysVals:
    d.setdefault(week,int())
    d[k]+=v

如何将以前的dict值添加到当前的dict值中,并显示以下输出?:

d = {'one':10, 'two':25, 'three':45, 'four': 50}

2 个答案:

答案 0 :(得分:4)

使用itertools.accumulate得到一个连续的总和:

import itertools

keysVals = [('one', 10), ('two', 15), ('three', 20), ('four', 5)]
keys, vals = zip(*keysVals)
d = dict(zip(keys, itertools.accumulate(vals)))
print(d)
# {'one': 10, 'two': 25, 'three': 45, 'four': 50}

答案 1 :(得分:2)

此完整程序演示了一种方法,该方法可在Python 2和3中使用。

keysVals = [('one',10),('two',15),('three',20),('four',5)]
d = {}

sum = 0
for keyVal in keysVals:
    sum += keyVal[1]
    d[keyVal[0]] = sum

print(d)

它基本上遍历整个列表,将每个值加到一个和(最初为零),然后使用该和填充相关的字典项。输出是预期的:

{'one': 10, 'two': 25, 'three': 45, 'four': 50}