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

如何对列表中的重复float值求和并将结果存入新列表

实现方法

方案1:Python 3.7+ 原生字典实现(推荐)

Python 3.7及以上版本中字典默认保留元素插入顺序,直接遍历列表累加相同值即可:

listA = [1.356, 7.663, 12.466, 1.356, 7.663, 12.466, 1.356, 7.663, 12.466]
sum_dict = {}
for num in listA:
    sum_dict[num] = sum_dict.get(num, 0) + num
listB = list(sum_dict.values())
# 输出结果:[4.068, 22.989, 37.398]

方案2:兼容旧版本Python(3.7以下)

如果使用3.7以下版本Python,原生字典不保序,可借助collections.OrderedDict保证输出顺序和元素首次出现顺序一致:

from collections import OrderedDict
listA = [1.356, 7.663, 12.466, 1.356, 7.663, 12.466, 1.356, 7.663, 12.466]
sum_dict = OrderedDict()
for num in listA:
    sum_dict[num] = sum_dict.get(num, 0) + num
listB = list(sum_dict.values())

注意事项

如果列表中的浮点数是运算生成的,可能存在精度误差导致表面数值相同的浮点数实际存储值不同,可先将数值舍入到对应精度作为统计key:

sum_dict = {}
precision = 3 # 按实际数据的小数位数调整
for num in listA:
    key = round(num, precision)
    sum_dict[key] = sum_dict.get(key, 0) + num
listB = list(sum_dict.values())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 03:27:03