2013-05-21 23 views
1

使用python 3.2在嵌套列表中有两列输入数据:[0]中的物种代码和[1]中的观察值,并且每行都有两个附加列, [2]和[3],计算值,例如:如何从itertools groupby中提取摘要列表

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

我需要,并得到了(带帮助)在小计[2]和[3]对于每个物种代码[0]的条件:

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)) 

现在我需要另一份清单,把它summary_trees,只有这些值,所以我可以在其他地方使用它。这个例子它会是:

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

看起来这应该是简单的,我觉得愚蠢的不看它。 在现实生活中存在的品种代码的不确定的数字,通常4-8

回答

1

之间似乎为建立一个列表与您的打印输出一样简单......

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)])