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

如何用Python 3将指定列表生成特定结构的嵌套字典

Python 3 生成指定嵌套字典解决方案

输入需求

将以下列表转换为嵌套字典,要求第一个子列表的元素作为顶层键,后续子列表元素作为嵌套子项:

input_list = [
    ["Layer 1.A", "Layer 1.B"],
    ["Layer 2.A", "Layer 2.B"],
    ["Layer 3"],
    ["Layer 4"]
]

已尝试的方法及问题

  • 使用product方法:生成全排列列表,不符合嵌套字典要求,输出示例:
    [
        ["Layer 1.A", "Layer 2.A", "Layer 3", "Layer 4"],
        ["Layer 1.A", "Layer 2.B", "Layer 3", "Layer 4"],
        ["Layer 1.B", "Layer 2.A", "Layer 3", "Layer 4"],
        ["Layer 1.B", "Layer 2.B", "Layer 3", "Layer 4"]
    ]
    
  • 嵌套for循环:无法正确实现嵌套内容的添加逻辑
  • 递归尝试:使用dict(zip(keys, dictionary) for keys in product(*dictionary2))时,dict或zip会遍历字符串的每个字符,不符合预期
  • Lambda函数:未找到适配的实现方式

期望输出

仅第一层键不同,内部结构完全一致:

[
    {"Layer 1.A":
        {
            "Layer 2.A": 
            {
                "Layer 3" : "Layer 4"
            },
            "Layer 2.B":
            {
                "Layer 3" : "Layer 4"
            }
        }
    },
    {"Layer 1.B":
        {
            "Layer 2.A": 
            {
                "Layer 3" : "Layer 4"
            },
            "Layer 2.B":
            {
                "Layer 3" : "Layer 4"
            }
        }
    }
]

解决代码

def build_nested_dict(layers):
    # 从最后一层倒推构建公共嵌套结构
    nested = layers[-1][0]
    for layer in reversed(layers[1:-1]):
        temp_dict = {}
        for item in layer:
            temp_dict[item] = nested
        nested = temp_dict
    # 生成包含顶层键的最终结果列表
    result = []
    for top_key in layers[0]:
        result.append({top_key: nested})
    return result

# 测试执行
input_list = [
    ["Layer 1.A", "Layer 1.B"],
    ["Layer 2.A", "Layer 2.B"],
    ["Layer 3"],
    ["Layer 4"]
]

output = build_nested_dict(input_list)
import json
print(json.dumps(output, indent=4))

代码说明

  1. 倒推构建内部结构:从最后一层的Layer 4开始,依次向前遍历每一层,将当前层的所有元素作为键,对应的值为上一层构建好的嵌套结构,得到所有顶层键共用的内部嵌套字典。
  2. 生成最终列表:遍历第一层的每个键,将每个键与内部嵌套字典组合成单独的字典,再收集进结果列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:10:49