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

如何基于字符串第二段的数字降序排序列表,无数字项前置?

字符串列表按指定规则排序实现

给定待排序的字符串列表:

["dakdmwk 2", "fwewk 1", "fmewkfmwek 4", "oopap 3", "fekamkdflew fnewjke"]

排序规则:

  • 不含数字的字符串排在最前端
  • 包含数字的字符串,按字符串中的数字值降序排列

实现代码(Python)

def sort_strings(lst):
    def get_sort_key(s):
        # 遍历拆分后的字符串片段,提取数字
        for part in s.split():
            if part.isdigit():
                # 用负数字实现降序,0作为第一键值确保排在无数字项之后
                return (0, -int(part))
        # 无数字项返回(-1,),优先级高于有数字项
        return (-1, )
    
    return sorted(lst, key=get_sort_key)

# 测试示例
original_list = ["dakdmwk 2", "fwewk 1", "fmewkfmwek 4", "oopap 3", "fekamkdflew fnewjke"]
sorted_result = sort_strings(original_list)
print(sorted_result)

代码说明

  • 自定义get_sort_key函数生成排序键:
    • 对每个字符串拆分后检查是否存在数字片段,若存在则返回(0, -数字值),负号让数字大的项排在前面,0作为第一键值保证有数字项在无数字项之后
    • 无数字的字符串返回(-1,),由于-1小于0,会被sorted优先排在最前面
  • 调用Python内置的sorted()函数,传入自定义键即可完成排序

运行结果

['fekamkdflew fnewjke', 'fmewkfmwek 4', 'oopap 3', 'dakdmwk 2', 'fwewk 1']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:01:21