0

我正在尝试对键:值对列表的值部分中的多个值执行计算。

所以我有类似的东西:
[('apples', ['254', '234', '23', '33']), ('bananas', ['732', '28']), ('squash ', ['3'])]

我正在尝试创建一个 y 值列表,它们是上述整数的平均值。

如果 item[1] 包含 0 个元素,我要编写的是以下伪代码

ys.append(item[1])
else if item[1] contains > 0 个元素:
将元素相加,除以元素数
ys .append平均数

我不确定如何访问每个键的值集中可能存在的所有值。

4

3 回答 3

2

pairs您的配对列表在哪里:

averages = [float(sum(values)) / len(values) for key, values in pairs]

会给你一个平均值列表。

如果您的数字是字符串,如您的示例所示,请将sum(values)上面替换为sum([int(i) for i in values]).

编辑:如果你更想要一本字典,那么一个平均值列表:

averages = dict([(key, float(sum(values)) / len(values)) for key, values in pairs])
于 2010-07-08T21:22:48.917 回答
0
ys = []
for k, v in items:
    avg = sum(map(float, v))/len(v)
    ys.append(v)
于 2010-07-08T21:23:01.413 回答
0

您可以通过以下方式找到列表的平均值

sum(float(i) for i in lst) / len(lst)

如果列表的元素是整数,你可以这样做

float(sum(lst)) / len(lst)

但在您的示例中,它们是字符串,因此您必须转换它们。

在这种情况下,我实际上建议使用 Python 的列表理解工具来自动创建平均值列表。如果你的原始配对列表被命名,比如说,fruit_list(我知道南瓜不是水果,所以起诉我):

averages = [[] if len(values) == 0 else sum(float(i) for i in values)/len(values) for fruit, values in fruit_list]

虽然这看起来有点奇怪,因为这样你会得到一个列表,其中一些元素是浮点数,而其他元素是空列表。你确定你不是要使用,比如说,0而不是[]在没有值的时候item[1]

于 2010-07-08T21:23:21.583 回答