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

Python中如何计算字典单个键对应多值的平均值?

嘿,这个问题我经常碰到,给你一步步拆解怎么解决~

计算字典中指定键对应值的平均值

基础场景:值都是数值类型

就像你给的示例{'name': [1,2,3,3,1]},计算逻辑非常直观:

  1. 先拿到指定键对应的数值列表
  2. 用总和除以列表长度得到平均值(记得处理空列表的情况,避免除以0报错)

代码实现如下:

my_dict = {'name': [1,2,3,3,1]}
target_key = 'name'

# 获取对应值,键不存在时返回空列表
value_list = my_dict.get(target_key, [])

if value_list:
    average = sum(value_list) / len(value_list)
else:
    # 可以根据需求返回0、None或者提示信息
    average = 0

print(average)  # 输出2.0,和你的示例结果一致

进阶场景:值包含字符串类型的数值

针对你提到的rows数据,整理后的字典里会混有字符串和浮点数类型的数值,这时候需要先把所有值统一转换成数值类型,再计算平均值。

完整的代码流程(包括整理字典的步骤):

rows = (("name", 0.4), ("name", "0.3"), ("name", "0.9"), ("name", "1.2"), ("name", "1.1"))

# 第一步:把rows整理成键对应多值的字典
from collections import defaultdict
result_dict = defaultdict(list)
for key, val in rows:
    result_dict[key].append(val)

# 第二步:计算指定键的平均值
target_key = 'name'
value_list = result_dict.get(target_key, [])

if value_list:
    # 把所有值转换成浮点数,处理混合类型的情况
    numeric_values = [float(v) for v in value_list]
    average = sum(numeric_values) / len(numeric_values)
else:
    average = 0

print(average)  # 输出0.78

额外注意事项

  • 如果担心有无法转换的非数值字符串,可以加上异常处理,跳过无效值:
numeric_values = []
for v in value_list:
    try:
        numeric_values.append(float(v))
    except ValueError:
        print(f"跳过无法转换的无效值:{v}")

if numeric_values:
    average = sum(numeric_values) / len(numeric_values)
else:
    average = 0
  • 如果键不存在,用get方法返回空列表可以避免触发KeyError,让代码更健壮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 14:48:16