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

如何按文件名末尾四位数字升序排列字典的元素列表

解决字典中文件名列表按末尾四位数字升序排序的问题

没问题,这事儿很容易搞定!核心思路就是从每个文件名里提取出末尾的四位数字,把它作为排序依据,然后对字典里每个键对应的列表做升序排列。

具体实现方案

我们可以用Python的sorted()函数配合自定义排序键来完成,代码简洁又高效:

# 基于原始字典 grouped_labels 生成排序后的新字典
sorted_grouped_labels = {
    key: sorted(files, key=lambda fname: int(fname.split('_')[-1].split('.')[0]))
    for key, files in grouped_labels.items()
}

代码细节解释

  • fname.split('_')[-1]:把文件名按下划线分割,取最后一段内容——比如对v_SkateBoarding_g11_c03_0071.jpeg,这一步会得到0071.jpeg
  • .split('.')[0]:把上面的结果按小数点分割,取第一段,得到纯数字字符串0071
  • int(...):将数字字符串转为整数,确保排序是按数字大小来(虽然四位字符串的字典序和数字序结果一致,但转成整数的写法更严谨,也能兼容未来可能出现的非四位数字场景)

验证示例

拿你给出的示例列表测试:

example_files = ['v_SkateBoarding_g11_c03_0071.jpeg', 'v_SkateBoarding_g11_c03_0089.jpeg', 'v_SkateBoarding_g11_c03_0063.jpeg', 'v_SkateBoarding_g11_c03_0006.jpeg', 'v_SkateBoarding_g11_c03_0052.jpeg', 'v_SkateBoarding_g11_c03_0033.jpeg', 'v_SkateBoarding_g11_c03_0032.jpeg']
sorted_files = sorted(example_files, key=lambda fname: int(fname.split('_')[-1].split('.')[0]))
print(sorted_files)

运行后会得到按数字升序排列的结果:

['v_SkateBoarding_g11_c03_0006.jpeg', 'v_SkateBoarding_g11_c03_0032.jpeg', 'v_SkateBoarding_g11_c03_0033.jpeg', 'v_SkateBoarding_g11_c03_0052.jpeg', 'v_SkateBoarding_g11_c03_0063.jpeg', 'v_SkateBoarding_g11_c03_0071.jpeg', 'v_SkateBoarding_g11_c03_0089.jpeg']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:07:08