如何用for循环获取Python字典所有元素的均值?代码仅输出最后一个结果
计算字典中每个元素的均值问题解决
你的代码逻辑本身是对的,但最后输出环节出错了——循环结束后value变量保留的是最后一个键('ao'),所以print(avg_rate[value])只会打印该键对应的单个均值。
修改方法很简单,直接打印整个avg_rate字典即可:
comp_dict = {'ap': {'val': 0.3, 'count': 3}, 'sd': {'val': 0.02, 'count': 1}, 'ao': {'val': 0.01, 'count': 1}} avg_rate = {} for key in comp_dict.keys(): avg_rate[key] = comp_dict[key]['val'] / comp_dict[key]['count'] # 打印整个结果字典,而非单个键对应的值 print(avg_rate)
运行后会输出:{'ap': 0.1, 'sd': 0.02, 'ao': 0.01},完全符合你的需求。
另外,也可以用Python的字典推导式简化代码,写法更简洁高效:
comp_dict = {'ap': {'val': 0.3, 'count': 3}, 'sd': {'val': 0.02, 'count': 1}, 'ao': {'val': 0.01, 'count': 1}} avg_rate = {k: v['val'] / v['count'] for k, v in comp_dict.items()} print(avg_rate)
这个写法直接遍历字典的键值对,一步生成结果字典,效果和循环写法一致。
内容的提问来源于stack exchange,提问作者James Wang
相关产品推荐
相关产品推荐

