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

将现有字典值存入空字典后调用sum求和报int与list相加类型错误

错误产生原因
  • sum()函数默认初始累加值为整数0,会将初始值依次和待求和序列的每个元素执行加法操作
  • 你的代码执行完循环后,twos字典的所有值都是单元素列表,twos.values()返回的内容为[[2662.0], [3646.7], [250.8]]
  • 求和时第一步就会执行0 + [2662.0],整数和列表不支持加法运算,因此抛出TypeError: unsupported operand type(s) for +: 'int' and 'list'错误。
解决方案

根据使用场景,可选择以下任意一种方案:

方案1:保留当前twos结构,展开嵌套列表后求和

如果需要保留twos为每个key对应列表的结构,求和时先展开内层列表即可:

ones = {'alpha': [2662.0,80], 'beta': [3646.7,50], 'gamma': [250.8,100]}
twos = {}

for k,(v,q) in ones.items():
    if k not in twos:
        twos[k] = []
    twos[k].append(v)
print(twos)

sum_twos = sum(val for sublist in twos.values() for val in sublist)
print(sum_twos)

运行后求和结果为6559.5。

方案2:调整twos的存储结构,直接存数值

如果twos不需要存为列表,直接将提取的v赋值给对应key即可,此时twos.values()返回的都是数值,可以直接用sum()求和:

ones = {'alpha': [2662.0,80], 'beta': [3646.7,50], 'gamma': [250.8,100]}
twos = {}

for k,(v,q) in ones.items():
    twos[k] = v
print(twos)

sum_twos = sum(twos.values())
print(sum_twos)

方案3:省略构建twos的步骤,直接累加求和

如果你只需要最终的求和结果,不需要twos字典,可以直接在遍历ones的过程中累加数值,性能更高:

ones = {'alpha': [2662.0,80], 'beta': [3646.7,50], 'gamma': [250.8,100]}
sum_twos = 0
for k,(v,q) in ones.items():
    sum_twos += v
print(sum_twos)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:06:03