Here's my list of tuples:
regions = [(23.4, 12, 12341234),
(342.23, 19, 12341234),
(4312.3, 12, 12551234),
(234.2, 12, 12341234)]
I'm trying to sum the first index value in a list of tuples where the values at indices 1 and 2 are identical. Note that regions[0] and regions[3] have the same values at indices 1 and 2.
My desired list is:
result = [(257.6, 12, 12341234),
(342.23, 19, 12341234),
(4312.3, 12, 12551234)]
I realize that I probably need to save it as a dictionary first, probably with the second value as the first key and the third value as the second key and summing if it already exists. Just wondering if there's a better or easier way: I'm thinking maybe using some intersect function.
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()]
There isn't a built-in function to do this; it's far too specialized a task.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With