如何在元组的python列表中将index [2]的值与index [0]的相同值相加

时间:2017-05-16 15:01:03

标签: python list dictionary

如何在元组的python列表中将index [2]的值与index [0]的相同值相加?

rows = [(1,'abc', 101),(2, 'rt',8765),(5, 'dfdf', 321),(1, 'abc', 477),(1, 'abc', 233),(3, 'rree', 323), (5, 'dfdf', 4531), (1, 'abc', 99)]
ids = 1,2,5,3  

在索引0处,如何将index[2] (101, 477, 99)为1且(4531, 321)为5的值的总和具有相似的ID

1 个答案:

答案 0 :(得分:1)

我假设您要根据索引0处的id聚合索引2处的值。您可以使用字典来汇总数据:

rows = [
    (1,'abc', 101),(2, 'rt',8765),(5, 'dfdf', 321),(1, 'abc', 477),
    (1, 'abc', 233),(3, 'rree', 323), (5, 'dfdf', 4531), (1, 'abc', 99)]
aggregated = {}
for row in rows:
    aggregated[row[0]] = aggregated.get(row[0], 0) + row[2]

现在aggregated{1: 910, 2: 8765, 3: 323, 5: 4852}

或者 - 如果您不想要这种恼人的get方法 - 您可以使用defaultdict的力量:

from collections import defaultdict
aggregated = defaultdict(int)
for row in rows:
    aggregated[row[0]] += row[2]

现在aggregateddefaultdict(<class 'int'>, {1: 910, 2: 8765, 3: 323, 5: 4852})