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

Python中如何对包含数字的字符串列表按数值顺序正确排序

排序实现方案

你需要的是自然语义排序,默认字符串字典序排序会把'10'排在'2'前面,因为字符'0'的ASCII码小于'2',所以需要自定义排序规则,提取字符串中的数字作为排序依据。

默认无规则排序的结果为:['Number 1', 'Number 10', 'Number 11', 'Number 2'],和预期不符。

Python 实现代码

简易版(适配你给出的固定字符串格式)

通过字符串拆分提取末尾数字作为排序key:

original_list = ['Number 10', 'Number 11', 'Number 1', 'Number 2']
original_list.sort(key=lambda item: int(item.split()[-1]))
print(original_list)
# 输出:['Number 1', 'Number 2', 'Number 10', 'Number 11']

通用版(适配字符串格式不固定的场景)

用正则提取字符串中第一段数字作为排序key:

import re
original_list = ['Number 10', 'Number 11', 'Number 1', 'Number 2']
original_list.sort(key=lambda item: int(re.search(r'\d+', item).group()))

其他编程语言通用逻辑

所有语言实现该需求的核心逻辑完全一致:

  • 遍历列表每个元素,提取出其中的数字部分
  • 将提取到的数字转为数值类型(禁止用字符串类型比较)作为排序权重
  • 按照权重对原列表进行排序即可得到预期结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:54:04