首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据第0列中的字符串将嵌套列表(用作矩阵)细分为列表

如何根据第0列中的字符串将嵌套列表(用作矩阵)细分为列表
EN

Stack Overflow用户
提问于 2013-05-01 23:20:30
回答 1查看 178关注 0票数 1
代码语言:javascript
运行
复制
trees=[
['species_1', observednumber_1, calculatedvalue, calculatedvalue],
['species_2', observednumber_2, calculatedvalue, calculatedvalue],
['species_1', observednumber_3, calculatedvalue, calculatedvalue],
[etc.]
]

这是一个示例站点的数据。每一行都是一个观察值。观察的数量、涉及的物种数量和每个物种的数量各不相同-即每个物种可能有几个个体。(我已经使用species_1等作为一个物种的字母组合代码的替身-涉及数百个物种,每个站点只有几个-我希望能够直接输入代码)。(观察)行数可能约为20-30,物种数可能为4-8

我需要能够对每个物种的计算值求和。

我看到的唯一方法是将列表细分为每个物种的列表。我该怎么做呢?一旦我这样做了,我就可以获取列总数。

EN

回答 1

Stack Overflow用户

发布于 2013-05-01 23:24:08

您可以使用defaultdict按键对行进行“分组”:

代码语言:javascript
运行
复制
from collections import defaultdict

grouped = defaultdict(list)

for row in trees:
    grouped[row[0]].append(row)

现在,grouped是一个以第一列为键的字典,值是所有具有相同第一列的行的列表。

你可以就地求和:

代码语言:javascript
运行
复制
from collections import defaultdict

grouped = defaultdict(int)

for row in trees:
    grouped[row[0]] += row[1] * row[2]

其中row[1] * row[2]可以是任何表达式。现在,grouped将第一列中命名的物种映射到为该物种计算的总和。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16321001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档