Python:访问键值对中值部分的多个值

0 投票
3 回答
1940 浏览
提问于 2025-04-16 01:01

我正在尝试对一个包含键值对的列表中的多个值进行计算。

我的数据大概是这样的:
[('苹果', ['254', '234', '23', '33']), ('香蕉', ['732', '28']), ('南瓜', ['3'])]

我想创建一个新的列表,这个列表里的值是上面这些数字的平均值。

我想写的伪代码大致是这样的:
如果 item[1] 里没有元素:
ys.append(item[1])
否则如果 item[1] 里有元素:
把元素加起来,然后除以元素的数量
ys.append 平均值

我不太确定的是,如何访问每个键对应的值集合中的所有值。

3 个回答

0

当然可以!请看下面的内容:

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,当用户点击一个按钮时,我们希望程序能做出反应。这种情况就需要用到“事件处理”。

事件处理就是当某个事件发生时,程序会自动执行预先设定好的代码。就像你按下电灯开关,灯泡就会亮一样。

在很多编程语言中,我们可以通过定义“事件监听器”来实现这一点。事件监听器就像是一个守卫,时刻关注着特定的事件,一旦事件发生,它就会立刻执行相应的代码。

例如,如果你有一个按钮,点击它时就会弹出一个消息框。你需要先告诉程序:“嘿,当这个按钮被点击时,请执行这个操作。”这样,当你真的点击按钮时,程序就会知道该做什么。

总之,事件处理让我们的程序能够对用户的操作做出反应,使得程序更加互动和友好。

ys = []
for k, v in items:
    avg = sum(map(float, v))/len(v)
    ys.append(v)
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]

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

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])

撰写回答