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

Python计算字典值平均值时sum报TypeError:int与str无法相加问题求解

错误原因
  • 报错TypeError: unsupported operand type(s) for +: 'int' and 'str'是因为传入的评分列表中同时存在整数类型和字符串类型的评分值,比如[3, "2", 4, "5"],sum()函数累加时无法处理两种不同类型的值相加,因此触发类型错误。
修复方案

有两种修复方式,可根据场景选择:

方式1:统一转换评分类型(适合所有评分值本身是数字格式的字符串场景)

修改函数,先将所有评分统一转为浮点型再计算平均值,修改后代码如下:

def calculate_average_rating(input):
    final = {}
    for key in input.keys():
        # 所有评分转成浮点型,消除类型差异
        ratings = [float(r) for r in input[key]]
        avg = sum(ratings)/len(ratings)
        final[key] = avg
    return final

方式2:增加异常兼容逻辑(适合存在无效非数字评分的场景)

如果无法保证输入的评分都是有效数字,可以增加校验逻辑,过滤无效值同时避免空列表除零错误:

def calculate_average_rating(input):
    final = {}
    for key in input.keys():
        valid_ratings = []
        for r in input[key]:
            # 尝试转成浮点型,转换失败则跳过该评分
            try:
                valid_ratings.append(float(r))
            except (ValueError, TypeError):
                continue
        if len(valid_ratings) == 0:
            # 无有效评分时返回None,可根据需求调整默认值
            final[key] = None
        else:
            avg = sum(valid_ratings)/len(valid_ratings)
            final[key] = avg
    return final

两种修复方式都可以兼容你的示例输入,输入{"Spider-Man (2002)": [3,2,4,5]}或混有字符串评分的{"Spider-Man (2002)": [3,"2","4",5]}时,都能正常返回{"Spider-Man (2002)": 3.5}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:36:02