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

Python对带数字的字符串文件名执行sorted排序结果异常,如何解决?

问题原因

Python默认对字符串执行字典序排序,逐字符比对ASCII值,不会自动识别字符串内部的数值大小。比如比对100.0-178.pom和15.00-178.pom时,第一个字符1一致,比对第二个字符时0的ASCII值小于5,因此100.0-178.pom会排在15.00-178.pom之前,不符合预期的数值排序逻辑。

修复方案

给sorted函数指定key参数,提取文件名中需要排序的数值部分转为数字类型,作为排序依据即可。注意不要用list作为变量名,会覆盖Python内置的list类型:

file_list = [ '10.50-178.pom', '15.00-178.pom','100.0-178.pom', '11.00-178.pom', '110.0-178.pom', '120.0-178.pom', '130.0-178.pom', '10.00-178.pom', '140.0-178.pom' ]

# 按横杠前的数值大小排序
sorted_list = sorted(file_list, key=lambda x: float(x.split('-')[0]))
print(sorted_list)

运行后输出符合预期的结果:

['10.00-178.pom', '10.50-178.pom', '11.00-178.pom', '15.00-178.pom', '100.0-178.pom', '110.0-178.pom', '120.0-178.pom', '130.0-178.pom', '140.0-178.pom']

如果后续文件名的规则发生变化,调整key对应的数值提取逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:36:07