如何在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)
代码说明
- 自定义的
custom_sort_key函数会将每个字符串转换为元组列表,每个元组包含优先级权重和字符本身。 sorted()函数先比较元组的第一个元素(优先级权重),权重小的排在前面;权重相同时,再比较第二个元素(字符本身),按ASCII顺序排序。- 运行代码后,输出结果完全符合预期的排序规则。
内容的提问来源于stack exchange,提问作者Alessandro
相关产品推荐
相关产品推荐

