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

Python如何按字母顺序而非长度排序文件扩展名

问题根因

你的排序key提取逻辑存在切片错误:x[x.rindex("."):-1] 会丢弃扩展名的最后一个字符。以format.c为例,.所在索引为6,切片范围是从索引6到倒数第二个字符(不包含最后一位的c),最终提取到的key是.,排序优先级远高于.bit、.man,因此会被排到首位。

修正代码

直接取.位置到字符串末尾的全部内容作为排序key即可,修正后代码如下:

from typing import List

def sort_by_ext(files: List[str]) -> List[str]:
    return sorted(files, key=lambda x: x[x.rindex("."):])
效果验证

针对你给出的测试用例["x.bit","y.man","format.c"],修正后代码提取的排序key分别为:

  • x.bit → .bit
  • format.c → .c
  • y.man → .man

字符串按字母序逐位比较的结果为.bit < .c < .man,最终输出排序结果为["x.bit", "format.c", "y.man"],format.c正好处于索引1的位置,符合预期。

边界提示:如果后续需要适配无扩展名、点开头的隐藏文件(如.gitignore)等特殊场景,可以在key提取逻辑中增加分支判断,当前代码可直接满足你给出的测试场景需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:57:22