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

如何在Python中按数字<小写<大写规则对字符串列表排序?

Python实现自定义排序:数字优先、小写字母次之、大写字母最后

需求说明

原始字符串列表:

l = ['AAAA.html', 'aaa.html', 'index.html', 'diem', '1zz.html']

需要按照数字优先、小写字母次之、大写字母最后的规则排序,最终得到:

['1zz.html', 'aaa.html', 'diem', 'index.html', 'AAAA.html']

实现方案

利用Python内置的sorted()函数,通过自定义key参数指定排序优先级即可实现。核心思路是给不同类型的字符分配优先级权重:

  • 数字字符优先级最高(权重0)
  • 小写字母优先级次之(权重1)
  • 大写字母优先级最低(权重2)
  • 其他字符(如.)按小写字母的优先级处理(不影响示例中的排序结果)

具体代码如下:

l = ['AAAA.html', 'aaa.html', 'index.html', 'diem', '1zz.html']

def custom_sort_key(s):
    key_components = []
    for char in s:
        if char.isdigit():
            key_components.append((0, char))
        elif char.islower():
            key_components.append((1, char))
        elif char.isupper():
            key_components.append((2, char))
        else:
            key_components.append((1, char))
    return key_components

# 执行排序
result = sorted(l, key=custom_sort_key)
print(result)

代码说明

  1. 自定义的custom_sort_key函数会将每个字符串转换为元组列表,每个元组包含优先级权重和字符本身。
  2. sorted()函数先比较元组的第一个元素(优先级权重),权重小的排在前面;权重相同时,再比较第二个元素(字符本身),按ASCII顺序排序。
  3. 运行代码后,输出结果完全符合预期的排序规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:50:37