Summing/combining tuples
Dan Sommers
dan at tombstonezero.net
Fri May 20 23:19:49 EDT 2016
On Wed, 18 May 2016 20:59:55 -0400, DFS wrote:
> Have aList = [
> ('x','Name1', 1, 85),
> ('x','Name2', 3, 219),
> ('x','Name2', 1, 21),
> ('x','Name3', 6, 169)
> ]
>
> want
>
> aList = [
> ('Name1', 1, 85),
> ('Name2', 4, 240),
> ('Name3', 6, 169)
> ]
[snip]
> 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))]])
Shorter? In terms of number of expressions, yes. In terms of
characters typed, no.
Sweeter? YMMV.
HTH,
Dan
More information about the Python-list
mailing list