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

如何在Python中正确排序三段式版本号格式的数字字符串?

如何在Python中正确按版本号对目录名排序?

默认的字符串排序会按字符逐个比较,导致1.10.0排在1.5.0之前——因为字符串比较时'1.1'比'1.5'小。要实现按数字版本号的正确排序,有两种常用方案:

方法一:使用专门的版本解析库(推荐)

packaging库的Version类可以完美处理语义化版本号的解析和比较,支持带预发布标签(如1.10.0rc1)的复杂场景。

  1. 先安装库:
pip install packaging
  1. 排序代码:
from packaging.version import Version

dir_versions = ['1.1.0', '1.10.0', '1.5.0', '1.7.0', '1.8.0', '1.8.1', '1.9.1', '1.9.2']
dir_versions.sort(key=lambda v: Version(v))
print(dir_versions)

执行后输出正确排序结果:

['1.1.0', '1.5.0', '1.7.0', '1.8.0', '1.8.1', '1.9.1', '1.9.2', '1.10.0']

方法二:手动转换为整数元组排序

如果不想安装额外依赖,可以将版本号按.拆分后转为整数元组,用元组的数字比较逻辑实现排序。这种方法仅适用于纯数字的语义化版本号。

代码示例:

dir_versions = ['1.1.0', '1.10.0', '1.5.0', '1.7.0', '1.8.0', '1.8.1', '1.9.1', '1.9.2']
dir_versions.sort(key=lambda v: tuple(map(int, v.split('.'))))
print(dir_versions)

同样会输出正确的排序结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:31:06