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

Python如何计算defaultdict各分组对应列表值的平均值

defaultdict列表值均值计算方案
  • 你此前认为「列表内的值无法修改」的认知是错误的。Python中list属于可变数据类型,支持元素增删、修改、替换操作,计算均值时既可以保留原始列表数据单独生成均值结果,也可以直接替换原字典中对应键的值为均值。

方案1:保留原始明细数据(推荐)

该方案不会改动原始存储的强度列表,单独生成存储均值的新字典,后续需要回溯原始数据时不会出现信息丢失。

from collections import defaultdict

# 你原有的数据初始化逻辑
Unknown_dict = defaultdict(list)
for j, k in zip(my_unknown_id, my_unknown_intensity):
    Unknown_dict[j].append(k)

# 均值计算逻辑
avg_result = {}
for key, num_list in Unknown_dict.items():
    # 增加空列表判断,避免除零报错
    avg_result[key] = sum(num_list) / len(num_list) if num_list else 0

针对你给出的示例数据,运行后得到的结果为:

{'ABC': 382.0, 'JIK': 622.5, 'KIL': 100.0, 'JAL': 200.0, 'HON': 300.0}

如果你使用Python 3.4及以上版本,也可以调用标准库statistics模块的mean函数简化写法:

from statistics import mean
# 计算时替换对应逻辑即可
avg_result[key] = mean(num_list) if num_list else 0

方案2:直接修改原字典(无需保留原始数据时使用)

如果不需要保留每个键对应的原始数值列表,可以直接遍历字典将对应值替换为均值。注意遍历键时要先转为列表副本,避免遍历过程中修改字典结构触发迭代异常。

for key in list(Unknown_dict.keys()):
    num_list = Unknown_dict[key]
    Unknown_dict[key] = sum(num_list) / len(num_list) if num_list else 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:24:16