Python字典为各键赋值时所有键仅返回最后一个平均值如何解决
问题根因
你遇到的问题是典型的变量作用域或循环遍历范围错误,常见有两类触发场景:
- 存储平均值的
averageVal、求和/计数变量定义在了外层循环外部,每次循环不会重置,最后所有键取的都是变量最终存储的最后一次计算结果 - 内层循环没有限定只遍历当前外层循环key对应的列表,而是每次都遍历了所有键的列表,最终只会保留最后一个列表的计算结果
正确实现方案
简洁写法(直接调用内置sum函数)
不需要手动写内层循环,代码可读性更高:
def calc_list_avg(original_dict): average_dict = {} for key, list_val in original_dict.items(): # 每次单独计算当前key对应列表的平均值 average_val = sum(list_val) / len(list_val) average_dict[key] = average_val return average_dict
手动实现内层循环写法(适合学习原理场景)
注意每次外层循环迭代时,先重置当前列表的求和、计数变量:
def calc_list_avg(original_dict): average_dict = {} for key in original_dict: current_list = original_dict[key] # 每次处理新的列表前重置累加变量 total = 0 count = 0 # 内层仅遍历当前key对应的列表 for num in current_list: total += num count += 1 average_val = total / count average_dict[key] = average_val return average_dict
效果验证
输入测试用例:{'a': [1,2,3], 'b': [4,5,6], 'c': [7,8,9]}
输出结果:{'a': 2.0, 'b': 5.0, 'c': 8.0},符合预期。
内容的提问来源于stack exchange,提问作者llama
相关产品推荐
相关产品推荐

