You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python字典循环中复用变量x输出不同值的技术求助

问题分析与解决

你的代码问题出在:外层循环遍历mylist时,每次计算的x会被后续循环覆盖,而且你在循环内部用字典推导式重新遍历整个mylist,此时推导式里的x其实是当前循环迭代到的最后一个x值,最终所有键都会被赋值为最后一次循环计算出的平均值。

要复用x变量同时得到正确结果,有两种可行方式:

方式一:循环逐个赋值

先初始化空字典,遍历mylist的每一组键值对,计算对应x后直接添加到字典中,这样每个键都会对应自己的平均值:

mylist = {('Jack', 'Grace', 8, 9, '15:00'): [0, 1, 1, 5], 
         ('William', 'Dawson', 8, 9, '18:00'): [1, 2, 3, 4], 
         ('Natasha', 'Jonson', 8, 9, '20:45'): [0, 1, 1, 2]
         }

mydict = {}
for key, value in mylist.items():
    x = sum(value) / len(value)
    mydict[key] = x

print(mydict)

方式二:封装计算逻辑到函数,复用在推导式中

如果还是想用字典推导式,可以把计算平均值的逻辑封装成函数,这样既实现了逻辑复用,又保持推导式的简洁:

def calculate_avg(lst):
    return sum(lst) / len(lst)

mylist = {('Jack', 'Grace', 8, 9, '15:00'): [0, 1, 1, 5], 
         ('William', 'Dawson', 8, 9, '18:00'): [1, 2, 3, 4], 
         ('Natasha', 'Jonson', 8, 9, '20:45'): [0, 1, 1, 2]
         }

mydict = {key: calculate_avg(value) for key, value in mylist.items()}
print(mydict)

这两种方式都能让每个键对应自己的平均值,同时实现了逻辑的复用。

内容的提问来源于stack exchange,提问作者user20812299

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 03:40:19