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

如何将文件路径列表格式化为层级嵌套的级联列表

实现方案

实现思路

  • 路径拆分:将所有输入路径按/符号分割为层级数组,便于后续逐层级匹配
  • 前缀树构建:用嵌套字典存储层级结构,相同父层级仅保留一份,避免重复输出上层节点
  • 递归打印:遍历前缀树,每深入一层增加固定缩进,按嵌套列表格式输出节点内容
    相比直接用zip对比层级的实现思路,前缀树方案逻辑更清晰,无需额外处理相邻路径的层级差异判断,也支持任意深度的路径嵌套,扩展性更强。

完整代码实现

def build_prefix_tree(paths):
    root = {}
    for path in paths:
        # 拆分路径为层级数组
        parts = path.strip().split('/')
        current_node = root
        for part in parts:
            # 不存在的层级则新建节点
            if part not in current_node:
                current_node[part] = {}
            current_node = current_node[part]
    return root

def print_nested_list(node, indent_level=0):
    # 每层缩进用两个空格,可按需调整
    indent = "  " * indent_level
    for key in node:
        print(f"{indent}- {key}")
        # 递归打印子层级
        print_nested_list(node[key], indent_level + 1)

if __name__ == "__main__":
    # 示例路径列表
    path_list = [
        "Level_1A/Level_2A/Level_3A/item0001",
        "Level_1A/Level_2A/Level_3A/item0002",
        "Level_1A/Level_2A/Level_3B/item0003",
        "Level_1A/Level_2B/item0004",
        "Level_1A/Level_2C/Level_3C/item0005",
        "Level_1A/Level_2C/Level_3C/item0006",
        "Level_1B/Level_2D/Level_3D/Level_4A/item0007",
        "Level_1B/Level_2D/Level_3D/Level_4A/item0008",
        "Level_1B/Level_2E/Level_3E/item0009",
    ]
    tree = build_prefix_tree(path_list)
    print_nested_list(tree)

输出效果

- Level_1A
  - Level_2A
    - Level_3A
      - item0001
      - item0002
    - Level_3B
      - item0003
  - Level_2B
    - item0004
  - Level_2C
    - Level_3C
      - item0005
      - item0006
- Level_1B
  - Level_2D
    - Level_3D
      - Level_4A
        - item0007
        - item0008
  - Level_2E
    - Level_3E
      - item0009

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:54:02