简体   繁体   中英

how to extract summary list from itertools groupby for statement

Using python 3.2 In a nested list are two columns of input data: a species code in [0] and an observed value in [1] and from each row two additional columns, [2] and [3], of calculated values, for example:

sorted_trees=[
['ACRU', 5, 1, 10],
['ACRU', 6, 2, 11],
['QURU', 7, 3, 12],
['QURU', 8, 4, 13]]

I needed, and got (with help) the subtotals in [2] and [3] for each species code [0] by:

import itertools as it, operator as op
for k,g in it.groupby(sorted_trees, key=op.itemgetter(0)):
    tempg=list(g)
    print(k, sum(i[2] for i in tempg), sum(i[3] for i in tempg))

Now I need to make another list, call it summary_trees, with just these values in it so I can use it elsewhere. It this example it would be:

summary_trees=[[ACRU, 3, 21],[QURU, 7, 25]]

It seems like this should be simple and I feel dumb not to see it. In real life there is an indeterminate number of species codes, usually between 4-8

It seems as simple as building a list with your printed output...

import itertools as it, operator as op
summary_trees = []
for k,g in it.groupby(sorted_trees, key=op.itemgetter(0))
    tempg=list(g)
    summary_trees.append([k, sum(i[2] for i in tempg), sum(i[3] for i in tempg)])

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM