Python:访问键值对中值部分的多个值
我正在尝试对一个包含键值对的列表中的多个值进行计算。
我的数据大概是这样的:
[('苹果', ['254', '234', '23', '33']), ('香蕉', ['732', '28']), ('南瓜', ['3'])]
我想创建一个新的列表,这个列表里的值是上面这些数字的平均值。
我想写的伪代码大致是这样的:
如果 item[1] 里没有元素:
ys.append(item[1])
否则如果 item[1] 里有元素:
把元素加起来,然后除以元素的数量
ys.append 平均值
我不太确定的是,如何访问每个键对应的值集合中的所有值。
3 个回答
当然可以!请看下面的内容:
在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,当用户点击一个按钮时,我们希望程序能做出反应。这种情况就需要用到“事件处理”。
事件处理就是当某个事件发生时,程序会自动执行预先设定好的代码。就像你按下电灯开关,灯泡就会亮一样。
在很多编程语言中,我们可以通过定义“事件监听器”来实现这一点。事件监听器就像是一个守卫,时刻关注着特定的事件,一旦事件发生,它就会立刻执行相应的代码。
例如,如果你有一个按钮,点击它时就会弹出一个消息框。你需要先告诉程序:“嘿,当这个按钮被点击时,请执行这个操作。”这样,当你真的点击按钮时,程序就会知道该做什么。
总之,事件处理让我们的程序能够对用户的操作做出反应,使得程序更加互动和友好。
ys = []
for k, v in items:
avg = sum(map(float, v))/len(v)
ys.append(v)
你可以通过以下方式找到一个列表的平均值:
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
而不是[]
吗?
这里的 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])