如何遍历给定的列表,找到元组的第二个索引的平均值,并将其存储在python中的新列表中



我知道这是一个愚蠢的问题,但我是python的新手,不知道如何做。实际上,我已经从mysql数据库中检索了一些数据,并得到了如下列表。

[
(7, 80),
(7, 40),
(7, 100),
(34, 100),
(34, 20),
(36, 60),
(36, 40),
(36, 100),
(36, 60),
]

列表的名称是";norm_rating";。在每个元组(7,80(中,第一个元素是"0";id";而第二个元素是"0"的归一化值;评级";。我想要的是得到一个新的列表,在该列表中;id";以及从";norm_rating";列表就像我想要的新名单一样,

[(7, 73.3), (34, 60), (36, 65)]

能给我一个python代码吗。

我会使用itertools.groupby将具有相同第一个元素的元组分组,然后只使用statistics.mean来获得第二个元素的平均值:

>>> data = [(7, 80), (7, 40), (7, 100), (34, 100), (34, 20), (36, 60), (36, 40), (36, 100), (36, 60)]
>>> from itertools import groupby
>>> from statistics import mean
>>> [(n, mean(t[1] for t in group)) for n, group in groupby(data, lambda t: t[0])]
[(7, 73.33333333333333), (34, 60), (36, 65)]

最新更新