5

这是我的元组列表:

regions = [(23.4, 12, 12341234), 
           (342.23, 19, 12341234), 
           (4312.3, 12, 12551234), 
           (234.2, 12, 12341234)]

我正在尝试将索引 1 和 2 处的值相同的元组列表中的第一个索引值相加。请注意,regions[0] 和 region[3] 在索引 1 和 2 处具有相同的值。

我想要的清单是:

result = [(257.6, 12, 12341234), 
          (342.23, 19, 12341234), 
          (4312.3, 12, 12551234)]

我意识到我可能需要先将它保存为字典,可能将第二个值作为第一个键,将第三个值作为第二个键,如果它已经存在则求和。只是想知道是否有更好或更简单的方法:我在想也许使用一些相交函数。

4

1 回答 1

6
from collections import defaultdict

sums = defaultdict(float)
for c, a, b in regions:
    sums[a, b] += c
result = [(csum, a, b) for (a, b), csum in sums.iteritems()]

没有内置函数可以做到这一点。这是一项过于专业的任务。

于 2013-04-11T16:05:29.213 回答