【问题标题】:Sum list values in pythonpython中的求和列表值
【发布时间】:2012-11-29 17:07:26
【问题描述】:

按标识符计算每列中的值。请看例子。 (我很难解释:()

像这样:

tdata = [
    ('column 1', [
        (1, 5), (2, 10), (3, 200)
        ]
    ), 
    ('column 2', [
        (1, 20), (2, 300), (3, 100)
        ]
    ), 
    ('column 3', [
        (1, 2), (2, 300), (3, 2000)
        ]
    )
]

从这个数据集中,我需要找到一种pythonic方法来计算一个元组的子值,其中内部元组的第一个值匹配。

所以我会做 Col1 = 5+20+2, Col2 = 10+300+300, Col3 = 200+100+2000。

我可以像这样以真正的代码密集型方式完成此任务:

col1 = []
col2 = []
col3 = []
data = []
for (column_name, column_values) in tdata:
    for (key, value) in column_values:
        if key == 1:
           col1.append(value)
        elif key == 2:
           col2.append(value)
        elif key == 3:
           col3.append(value)

data = [('Column 1', sum(col1)), ('Column 2', sum(col2)), ('Column 3', sum(col3))]

显然,这是很多代码,而不是最有效的方法。任何见解将不胜感激。

【问题讨论】:

    标签: list tuples python-2.x


    【解决方案1】:

    这是一种方法:

    rows = [x[1] for x in tdata]
    col1 = sum([x[0][1] for x in rows])
    col2 = sum([x[1][1] for x in rows])
    col3 = sum([x[2][1] for x in rows])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 2015-12-03
      • 1970-01-01
      • 2012-09-11
      • 2018-06-07
      • 2022-10-12
      • 1970-01-01
      相关资源
      最近更新 更多