Python计算单行值的运行总和

标签 python for-loop

我尝试处理这样的数据:

some_data = [
                {'value': 2, 'date':'2016-02-06'},
                {'value': 1, 'date':'2016-02-07'},
                {'value': 5, 'date':'2016-02-08'},
                {'value': 3, 'date':'2016-02-09'},
                {'value': 1, 'date':'2016-02-10'},
            ]

因此它会生成一个列表,其中的值已更新为运行总和。现在我用多行循环来做:

def values_incremented(some_data):
    temp_sum = 0
    result = []
    for element in some_data:
        temp_sum += element['value']
        result.append({'value': temp_sum, 'date': element['date']})
    return result

如何使循环成为一行,这样我就得到了:

return [{'value': somehow_incremented, 'date': element['date']} for element in some_data]

最佳答案

您可以自己编写一个累积生成器函数。使用 send 将值发送到生成器并获得新的总和。

def accumulator(n=0):
    while True:
        n += yield n

acc = accumulator(0)
acc.send(None)

res = [{'value': acc.send(element['value']), 'date': element['date']} for element in some_data]

因此,res

[{'value': 2, 'date': '2016-02-06'}, 
 {'value': 3, 'date': '2016-02-07'}, 
 {'value': 8, 'date': '2016-02-08'}, 
 {'value': 11, 'date': '2016-02-09'}, 
 {'value': 12, 'date': '2016-02-10'}]

关于Python计算单行值的运行总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35605014/

相关文章:

r - 如何在 R 中将连续值分配给变量,同时根据不同变量中包含的值的数量定义序列

c++ - for循环只循环3次

Python 回溯 : Key Error

python - Theano: ifelse 类型错误

c - 显示给定数字是偶数还是奇数的程序

loops - 一个与嵌套循环相关的谜题

c# - 循环只触发一次

python - 汇总每月值

python - pandas read_csv 编码奇怪的字符

python - 使用 Opencv python 从图像中裁剪矩形