如何从itertools groupby中为语句提取摘要列表

时间:2013-05-21 21:20:40

标签: python itertools

使用python 3.2在嵌套列表中有两列输入数据:[0]中的物种代码和[1]中的观察值以及每行中计算的另外两列[2]和[3]值,例如:

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 个答案:

答案 0 :(得分: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)])