如何在元组的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
答案 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]
现在aggregated
是defaultdict(<class 'int'>, {1: 910, 2: 8765, 3: 323, 5: 4852})
。