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

如何将带层级字符串的列表拆分为嵌套子列表并转为JSON?

实现层级字符串转嵌套列表并生成JSON的方案

我来给你详细说下怎么实现这个需求,用Python就能轻松搞定,分几步走:

核心思路

首先,我们可以先用字典来临时构建层级结构(字典的键值对特性能让我们快速查找和创建层级),之后再把字典转换成你需要的嵌套列表格式,最后直接生成JSON字符串。

完整代码实现

import json

def build_nested_structure(input_data):
    # 用字典暂存层级结构,方便快速定位
    root_dict = {}
    for path_str, value in input_data:
        # 把点分隔的路径拆分成层级列表
        path_parts = path_str.split('.')
        current_level = root_dict
        
        # 遍历除最后一层外的所有层级,逐层创建子结构
        for part in path_parts[:-1]:
            if part not in current_level:
                current_level[part] = {}
            current_level = current_level[part]
        
        # 给最后一层赋值
        current_level[path_parts[-1]] = value
    
    # 递归把字典转换成要求的嵌套列表格式
    def dict_to_nested_list(node):
        nested_list = []
        for key, val in node.items():
            if isinstance(val, dict):
                # 如果是子层级,继续递归转换
                nested_list.append([key, dict_to_nested_list(val)])
            else:
                # 叶子节点直接生成[key, value]对
                nested_list.append([key, val])
        return nested_list
    
    # 转换为目标嵌套列表
    nested_result = dict_to_nested_list(root_dict)
    return nested_result

# 你的输入列表
input_list = [['cat1.subcat1.item1', 0], ['cat1.subcat1.item2', 'hello'], ['cat1.subcat2.item1', 1337], ['cat2.item1', 'test']]

# 生成嵌套列表
nested_list = build_nested_structure(input_list)
print("生成的嵌套列表:")
print(nested_list)

# 直接生成JSON字符串
json_result = json.dumps(nested_list, indent=2)
print("\n生成的JSON字符串:")
print(json_result)

代码解释

  1. 构建层级字典:

    • 遍历每个输入条目,用split('.')把路径字符串拆分成层级数组(比如'cat1.subcat1.item1'变成['cat1', 'subcat1', 'item1'])
    • 从根字典开始,逐层检查并创建子字典,直到到达倒数第二层,然后把最后一层的键和对应的值关联起来
  2. 字典转嵌套列表:

    • 用递归函数dict_to_nested_list把字典的键值对转换成[key, 子列表/值]的格式,如果值还是字典(代表有子层级),就继续递归转换
  3. 生成JSON字符串:

    • 用json.dumps()直接把嵌套列表转换成JSON字符串,indent=2是为了生成格式化的易读JSON,不需要的话可以去掉这个参数生成紧凑的字符串

输出结果

运行代码后,生成的嵌套列表和你要求的完全一致:

[['cat1', [['subcat1', [['item1', 0], ['item2', 'hello']]], ['subcat2', [['item1', 1337]]]]], ['cat2', [['item1', 'test']]]]

对应的JSON字符串:

[
  [
    "cat1",
    [
      [
        "subcat1",
        [
          [
            "item1",
            0
          ],
          [
            "item2",
            "hello"
          ]
        ]
      ],
      [
        "subcat2",
        [
          [
            "item1",
            1337
          ]
        ]
      ]
    ]
  ],
  [
    "cat2",
    [
      [
        "item1",
        "test"
      ]
    ]
  ]
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:37:09