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
我需要能够对每个物种的计算值求和。
我看到的唯一方法是将列表细分为每个物种的列表。我该怎么做呢?一旦我这样做了,我就可以获取列总数。
发布于 2013-05-01 23:24:08
您可以使用defaultdict
按键对行进行“分组”:
from collections import defaultdict
grouped = defaultdict(list)
for row in trees:
grouped[row[0]].append(row)
现在,grouped
是一个以第一列为键的字典,值是所有具有相同第一列的行的列表。
你可以就地求和:
from collections import defaultdict
grouped = defaultdict(int)
for row in trees:
grouped[row[0]] += row[1] * row[2]
其中row[1] * row[2]
可以是任何表达式。现在,grouped
将第一列中命名的物种映射到为该物种计算的总和。
https://stackoverflow.com/questions/16321001
复制相似问题