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

Python实现字典回合分数平均值函数遇报错,如何解决?

解决Python计算多回合分数平均分的类型错误问题

你遇到的TypeError是因为dictionary.values()返回的是列表的集合,而sum()函数默认从整数0开始累加,尝试把0和列表相加自然会触发类型不兼容的错误——Python没法直接把整数和列表做加法运算。

要计算所有回合的平均分,你需要先把所有回合里的单个分数都提取出来,计算所有分数的总和以及分数的总个数,再用总分除以总个数得到结果。

方法一:用生成器表达式简洁实现

def find_average(dictionary):
    # 遍历所有回合的分数列表,累加单个分数得到总分
    total_score = sum(score for round_list in dictionary.values() for score in round_list)
    # 累加每个回合的分数数量,得到总个数
    total_count = sum(len(round_list) for round_list in dictionary.values())
    # 处理空字典的边界情况,避免除以0错误
    return total_score / total_count if total_count != 0 else 0.0

测试示例输入:

>>> find_average({'round 1': [1, 2, 3, 4], 'round 2': [3, 4, 2, 7], 'round 3': [2, 7, 5, 6]})
4.8

方法二:用列表合并直观实现

如果你觉得生成器表达式不够直观,也可以先把所有分数合并到一个列表中再计算:

def find_average(dictionary):
    all_scores = []
    # 将每个回合的分数列表合并到总列表
    for scores in dictionary.values():
        all_scores.extend(scores)
    # 计算平均分,空列表时返回0.0
    return sum(all_scores) / len(all_scores) if all_scores else 0.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:35:40