使用 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之间
最佳答案
这看起来就像用打印输出构建一个列表一样简单......
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)])
关于python - 如何从 itertools groupby for 语句中提取摘要列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16679662/