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

如何对含多段小数编号的字典列表按sectionnumber正确排序?

如何正确按带层级的数字字符串排序字典列表?

你当前遇到的问题是字符串排序的特性导致的:直接对sectionnumber这类带点分隔的层级字符串排序时,Python会按字符逐个比较,比如'10'的第一个字符'1'比'2'小,所以会排在'2'前面,不符合我们对数字层级的排序预期。

解决方法很简单,把sectionnumber分割成整数列表,用这个列表作为排序的key——整数会按数值大小比较,而非字符顺序:

codelist = sorted(codelist, key=lambda x: list(map(int, x["sectionnumber"].split('.'))))

代码说明:

  • x["sectionnumber"].split('.'):把层级字符串按.分割成字符串列表,比如'1010.1.9.10'会变成['1010', '1', '9', '10']
  • map(int, ...):把每个字符串元素转成整数,得到[1010, 1, 9, 10]
  • 排序时会按列表的层级顺序逐个比较数值,最终就能得到符合预期的排序结果:
    [{'sectionnumber': '1010.1.9', ...},
     {'sectionnumber': '1010.1.9.1', ...},
     {'sectionnumber': '1010.1.9.2', ...},
     {'sectionnumber': '1010.1.9.10', ...}]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:15:37