python - 如何从 itertools groupby for 语句中提取摘要列表

标签 python 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之间

最佳答案

这看起来就像用打印输出构建一个列表一样简单......

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/

相关文章:

Python itertools.product() 获取商品索引

python - Unicode解码错误: 'charmap' codec can't decode byte 0x81 in position 2483: character maps to <undefined>

python - 在 Django Rest Framework 端点方法中使用@staticmethod?

python - Postman Swift 代码显示与我的正常 url 不同的 url

python - 如何比较两个不相等的列表并将匹配元素值追加回第一个列表

python - 如何在 Django 中使用 itertools.chain 执行多个排除命令?

python - 使用数组运算过滤 numpy

python - Kivy 小部件隐藏在 Windows 标题栏下

python - Numba 代码比纯 python 慢

python - Itertools 在 python 中创建 Ts 和 Hs 的组合作为字符串