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

如何动态创建并引用值为字典的嵌套字典及其中的列表?

动态构建嵌套目录字典的解决方法

错误原因分析

你代码里的TypeError是因为错误的字典访问方式:mydirectory[my_key][my_value][inner_key]中,mydirectory[my_key]已经指向你创建的空字典my_value,不需要再用my_value作为键去访问——字典的键必须是可哈希类型(如字符串、数字),而字典本身不可哈希,所以触发了错误。正确的写法应该是直接通过键名访问内层字典,比如mydirectory[my_key][inner_key]。

基础动态构建示例

先修正你的初始代码,实现root条目的正确创建:

mydirectory = {}

# 创建root条目
my_key = 'root'
mydirectory[my_key] = {'parent': 'none', 'children': []}

# 给root的children添加子目录
mydirectory[my_key]['children'].extend(['folder1', 'folder2'])

print(mydirectory)

运行后会输出:

{'root': {'parent': 'none', 'children': ['folder1', 'folder2']}}

适配动态键名的通用构建方法

如果目录名(如folder1、folder2)来自外部列表,你可以先定义一个包含所有目录关系的数据源(模拟实际场景的输入),然后循环遍历构建字典:

假设你的目录关系数据是这样的列表:

dir_data = [
    {'name': 'root', 'parent': 'none', 'children': ['folder1', 'folder2']},
    {'name': 'folder1', 'parent': 'root', 'children': ['folder3']},
    {'name': 'folder2', 'parent': 'root', 'children': []},
    {'name': 'folder3', 'parent': 'folder1', 'children': []}
]

然后通过循环动态构建字典:

mydirectory = {}

for item in dir_data:
    dir_name = item['name']
    # 为每个目录创建对应的子字典
    mydirectory[dir_name] = {
        'parent': item['parent'],
        'children': item['children'].copy()  # 复制列表避免后续修改影响原数据
    }

print(mydirectory)

这样就能生成你想要的嵌套字典结构,而且完全不需要硬编码每个键名。

动态修改children列表

如果需要在后续逻辑中给某个目录的children添加新元素,直接通过键名定位后操作列表即可:

# 给folder1添加新子目录folder4
mydirectory['folder1']['children'].append('folder4')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:45:22