Summing/combining tuples
Dan Sommers
dan at tombstonezero.net
Sat May 21 01:14:02 EDT 2016
On Sat, 21 May 2016 03:19:49 +0000, Dan Sommers wrote:
>> Is there something shorter and sweeter for the summation?
>
> from itertools import groupby
> from operator import itemgetter
>
> result = [(k,
> sum(map(itemgetter(2), v)),
> sum(map(itemgetter(3), v)))
> for (k, v) in [(k, list(v))
> for (k, v)
> in groupby(aList, itemgetter(1))]])
Or even:
from itertools import groupby
from operator import itemgetter
from functools import reduce
result = [(k, *reduce(lambda acc, item: (acc[0] + item[2],
acc[1] + item[3]),
v,
(0, 0)))
for (k, v) in groupby(aList, itemgetter(1))]
More information about the Python-list
mailing list