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

如何按末尾字母优先、前置数字次之的规则排序字母数字列表?

自定义字母数字列表排序实现

问题描述

我有一个字母数字列表:

['00A', '01B', '05A', '00A', '23C', '00B']

需要按优先按元素末尾字母排序,再按前置数字排序的规则排序,期望得到结果:

['00A', '00A', '05A', '00B', '01B', '23C']

尝试过以下排序代码:

sorted(a, key = lambda x: (isinstance(x, str), x))

但返回的结果不符合需求:

['00A', '00A', '00B', '01B', '05A', '23C']

解决方案

要实现指定的排序规则,需要自定义排序的key函数,让排序逻辑先以元素末尾的字母为第一优先级,再以前置数字的数值大小为第二优先级。

正确代码示例

a = ['00A', '01B', '05A', '00A', '23C', '00B']
sorted_list = sorted(a, key=lambda x: (x[-1], int(x[:-1])))
print(sorted_list)

输出结果

['00A', '00A', '05A', '00B', '01B', '23C']

逻辑说明

  • x[-1]:提取每个元素的最后一个字符(字母部分),作为第一排序依据,确保所有末尾字母相同的元素归为一组。
  • int(x[:-1]):提取元素除最后一位外的子串,转换为整数类型后作为第二排序依据,这样数字部分会按数值大小排序,而非字符串字典序(避免'05'在'00'之后的问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:11:03