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

Python如何按文件名匹配规则将main数组内文件分组生成独立列表

Python图像文件名分组最优实现

核心思路

不要硬编码生成List_01/List_02这类零散独立变量,用字典作为分组容器是可维护性、扩展性最高的方案,核心逻辑只有两步:

  • 从每个文件名中提取对应的分类关键词(比如示例中的Sun/Moon)
  • 将同关键词的图像对象/文件路径归集到字典对应键的列表下

不推荐动态生成独立变量的原因:分类数量随文件变化时,动态变量会让后续调用、遍历逻辑极其混乱,字典既支持按键快速取对应分组,也支持直接遍历全部分组做批处理。

可直接复用的代码

import re
from collections import defaultdict

# 这里替换成你遍历目录得到的105张图像的数组,元素支持文件名字符串、自定义图像对象
Mainlist = ["Image_Sun_01", "Image_Sun_02", "Image_Moon_01"]

# 初始化分组字典,不存在的分类键会自动创建空列表
img_groups = defaultdict(list)

for img_item in Mainlist:
    # 提取分类关键词:适配Image_<分类词>_<序号>的命名规则,自动兼容.jpg/.png等后缀、大小写差异
    # 如果你的命名结构有变化,只需要修改这行的正则规则即可
    match_res = re.match(r"Image_([a-zA-Z]+)_\d+", img_item, re.IGNORECASE)
    if match_res:
        category_tag = match_res.group(1)
        img_groups[category_tag].append(img_item)

# 如果必须要你示例里的编号列表格式,直接按顺序取值即可
all_group_list = list(img_groups.values())
# 按分组出现顺序赋值,有多少个分组就取多少个,不需要提前固定数量
List_01 = all_group_list[0]
List_02 = all_group_list[1]

运行效果

执行后分组字典内容如下,和你预期的归类结果完全一致:

{
    "Sun": ["Image_Sun_01", "Image_Sun_02"],
    "Moon": ["Image_Moon_01"]
}

适配调整说明

  • 如果分类关键词位置不固定:可以提前维护你要匹配的关键词列表keywords = ["Sun", "Moon", "Star"],遍历时判断文件名包含哪个关键词就归集到对应分组
  • 如果数组元素是图像对象而非文件名:把正则匹配部分的img_item替换成获取文件名的属性即可,比如img_item.filename
  • 如果需要自定义分组排序:对all_group_list做自定义排序后再赋值给对应编号的列表即可

内容的提问来源于stack exchange,提问作者Marco N.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:57:16