1

使用 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]]

我需要,并且(在帮助下)通过以下方式获得了每个物种代码 [0] 的 [2] 和 [3] 中的小计:

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 之间

4

1 回答 1

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)])
于 2013-05-21T21:24:01.713 回答