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

如何计算Python字典中嵌套列表值的平均值?

解决嵌套列表字典的平均值计算问题

嘿,我来帮你搞定这个报错!你遇到的TypeError其实很好理解——你的字典里每个值都是两层嵌套的列表(比如[[9, 10, 9.5,...]]),直接用sum(dict1[key])的时候,Python会尝试把外层列表里的元素(也就是那个内层的评分列表)和整数相加,这显然是不支持的操作,所以就报错啦。

核心解决思路

我们需要先把内层的评分列表取出来(每个外层列表里只有这一个元素,所以用dict1[key][0]就能拿到),然后计算这个列表的总和,再除以列表的长度得到平均值。

修复后的循环代码

这是基于你原来的代码修改后的版本:

dict1 = { 
    'Monty Python and the Holy Grail': [[9, 10, 9.5, 8.5, 3, 7.5, 8]], 
    "Monty Python's Life of Brian": [[10, 10, 0, 9, 1, 8, 7.5, 8, 6, 9]], 
    "Monty Python's Meaning of Life": [[7, 6, 5]], 
    'And Now For Something Completely Different': [[6, 5, 6, 6]] 
}

dict2 = {}
for key in dict1:
    # 取出内层的评分列表
    scores = dict1[key][0]
    # 计算平均值:总和除以评分数量
    average = sum(scores) / len(scores)
    dict2[key] = average

# 输出结果
print(dict2)

更简洁的字典推导式版本

如果你喜欢更紧凑的代码,可以用字典推导式一行搞定:

dict2 = {key: sum(scores[0]) / len(scores[0]) for key, scores in dict1.items()}

额外优化:处理空列表的情况

如果担心某些评分列表为空(避免出现除以0的错误),可以加个简单的判断:

dict2 = {}
for key in dict1:
    scores = dict1[key][0]
    if not scores:
        average = 0.0  # 这里可以设置你想要的默认值,比如None或者0
    else:
        average = sum(scores) / len(scores)
    dict2[key] = average

运行上面的代码后,你就能得到每个作品对应的评分平均值啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:34:12