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

如何按父文件夹对路径列表进行动态分组?

动态按所属文件夹分组路径列表

给定如下路径列表,需要根据路径中的目标文件夹(如tent1、tent2)将路径自动分组到对应的子列表中,无需硬编码文件夹名称:

paths = [
    '/var/lib/cons/states/tent1/tops-ok_2022_11_28', 
    '/var/lib/cons/states/tent1/tops-ok_2022_11_27',  
    '/var/lib/cons/states/tent2/tops-ok_2022_11_28', 
    '/var/lib/cons/states/tent2/tops-ok_2022_11_27', 
    '/var/lib/cons/states/tent3/tops-ok_2022_11_28', 
    '/var/lib/cons/states/tent3/tops-ok_2022_11_27', 
    '/var/lib/cons/states/tent4/tops-ok_2022_11_28', 
    '/var/lib/cons/states/tent4/tops-ok_2022_11_27',
]

解决方案

可以通过字典动态分组:提取每个路径中的目标文件夹名称作为键,将对应路径存入值列表中,最后将字典的值转换为列表即可得到结果。

方法一:使用defaultdict简化代码

from collections import defaultdict

grouped = defaultdict(list)
for path in paths:
    # 拆分路径,取倒数第二个部分作为目标文件夹名
    folder = path.split('/')[-2]
    grouped[folder].append(path)

result = list(grouped.values())

方法二:普通字典实现(无需额外模块)

grouped = {}
for path in paths:
    folder = path.split('/')[-2]
    if folder not in grouped:
        grouped[folder] = []
    grouped[folder].append(path)

result = list(grouped.values())

最终结果

运行上述代码后,result的值与期望一致:

[['/var/lib/cons/states/tent1/tops-ok_2022_11_28', 
  '/var/lib/cons/states/tent1/tops-ok_2022_11_27'], 
 ['/var/lib/cons/states/tent2/tops-ok_2022_11_28', 
  '/var/lib/cons/states/tent2/tops-ok_2022_11_27'],
 ['/var/lib/cons/states/tent3/tops-ok_2022_11_28', 
  '/var/lib/cons/states/tent3/tops-ok_2022_11_27'],
 ['/var/lib/cons/states/tent4/tops-ok_2022_11_28', 
  '/var/lib/cons/states/tent4/tops-ok_2022_11_27']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:55:17