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

如何将嵌套类别列表转换为多层Python字典结构?

将嵌套列表转换为层级Python字典

需求是将嵌套列表形式的产品类别转换为具有层级结构的字典,其中叶子节点(无后续子类别)的值为None,且支持任意层级的分类路径。

输入的分类列表

categories_list = [
    ['computer', 'laptop'],
    ['computer', 'desktop'],
    ['computer', 'processor', 'Intel'],
    ['computer', 'processor', 'AMD'],
    ['computer', 'accessories', 'mouse'],
    ['computer', 'accessories', 'keyboard'],
    ['controller', 'raspberryPI'],
    ['controller', 'Arduino'],
    ['controller', 'accessories'],
    ['other'],
    ['electronics', 'other']
] 

期望输出的层级字典

categories_dict = {
    'computer': {'laptop': None, 
                 'desktop': None, 
                 'processor': {'Intel': None, 
                               'AMD': None}, 
                 'accessories': {'mouse': None, 
                                 'keyboard': None}},
    'controller': {'raspberryPI': None, 
                   'Arduino': None, 
                   'accessories': None},
    'other': None,
    'electronics': {'other': None}
}

当前错误输出

现有代码无法正确生成深层嵌套结构,输出如下:

{'computer': {'AMD': None,
              'Intel': None,
              'accessories': None,
              'desktop': None,
              'keyboard': None,
              'laptop': None,
              'mouse': None,
              'processor': None},
 'controller': {'Arduino': None,
                'accessories': None,
                'raspberryPI': None},
 'electronics': {'other': None},
 'other': {}}

解决方案代码

以下方法通过迭代遍历每个分类路径,逐层构建字典,支持任意层级的嵌套:

def build_category_dict(categories):
    result = {}
    for path in categories:
        current_level = result
        for index, category in enumerate(path):
            # 处理路径的最后一个节点,设为None
            if index == len(path) - 1:
                current_level[category] = None
            else:
                # 若当前节点不存在,创建空字典作为子节点
                if category not in current_level:
                    current_level[category] = {}
                # 移动到下一层级继续处理
                current_level = current_level[category]
    return result

# 测试示例
categories_list = [
    ['computer', 'laptop'],
    ['computer', 'desktop'],
    ['computer', 'processor', 'Intel'],
    ['computer', 'processor', 'AMD'],
    ['computer', 'accessories', 'mouse'],
    ['computer', 'accessories', 'keyboard'],
    ['controller', 'raspberryPI'],
    ['controller', 'Arduino'],
    ['controller', 'accessories'],
    ['other'],
    ['electronics', 'other']
]

# 生成并打印结果
import pprint
result_dict = build_category_dict(categories_list)
pprint.pprint(result_dict)

代码说明

  • 遍历每个分类路径(如['computer', 'processor', 'Intel']),从根字典result开始逐层深入。
  • 对于路径中的每个元素,判断是否为最后一个:
    • 若是最后一个元素,直接将其值设为None,标记为叶子节点。
    • 若不是最后一个元素,检查当前层级字典中是否存在该键,不存在则创建空字典,然后将当前处理层级切换到这个子字典,继续处理下一个元素。
  • 这种方式可以处理任意深度的分类路径,确保嵌套结构正确生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:25:14