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

Python如何对包含数值和字母数字混合值的列表按要求排序

Python混合类型列表排序实现方法

你可以通过自定义 sorted 函数的排序键实现需求,核心逻辑是把所有元素统一转换为「数值前缀+后缀字符串」的元组进行比较,具体代码如下:

import re

def get_sort_key(item):
    # 处理纯数值类型
    if isinstance(item, (int, float)):
        return (item, "")
    # 拆分字符串的数字前缀和后缀
    match_res = re.match(r"^(\d+)(.*)$", str(item))
    num_part = int(match_res.group(1))
    suffix_part = match_res.group(2)
    return (num_part, suffix_part)

l_beg = ['2a', 1, 3, '2b']
l_end = sorted(l_beg, key=get_sort_key)
print(l_end) # 输出:[1, '2a', '2b', 3]

排序逻辑说明

  • 元组比较会优先比对第一个元素,所以数值部分的排序会优先执行,保证 1 < 2 < 3 的整体顺序
  • 数值部分相同时会比对第二个元素:空字符串的排序优先级高于所有非空字符串,因此同数值的纯数值元素会排在字符串元素前面;同数值前缀的字符串会直接按后缀的自然顺序排序,因此 '2a' 会排在 '2b' 前面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:06:05