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

如何根据点分隔的层级动态生成多层嵌套字典?

动态生成多层嵌套字典问题

我需要根据变量B中的点分隔符生成多层嵌套字典,最终的键A和值D固定,但B的层级长度不固定。现在写的代码生成的是平级字典,达不到预期的嵌套效果,求解决。

变量定义

A = "key"
B = "one.two.three.four"
D = "value"

预期输出

{'one': {'two': {'three': {'four': {'key': 'value'}}}}}

我的伪代码

A = "key"
B = "one.two.three.four"
D = "value"

inner_dictionary = {}
whole_dictionary = {}

lst = B.split('.')
length = len(lst)

for i in range(length):
    new = lst[-1]
    tmp = {A:D}
    inner_dictionary.update(tmp)
    val = { new : inner_dictionary}
    whole_dictionary.update(val)
    lst.pop()

print(whole_dictionary)

实际输出

{'four': {'key': 'value'}, 'three': {'key': 'value'}, 'two': {'key': 'value'}, 'one': {'key': 'value'}}

问题原因

你之前的代码每次循环都直接把{A:D}赋值给内层字典,再把这个内层字典直接挂到外层的每个键下,导致所有键都指向同一个平级的{'key': 'value'},完全没有形成嵌套关系。

正确实现方式

要实现嵌套,得从最内层开始,逐层向外包裹。可以通过反向遍历B拆分后的层级列表,每次把当前的字典作为值包裹到上一层的键中。

代码示例

A = "key"
B = "one.two.three.four"
D = "value"

# 从最内层的目标字典开始
current_dict = {A: D}
# 拆分层级并反向遍历(从最底层到最顶层)
for level in reversed(B.split('.')):
    # 用当前层级键包裹住上一层的字典
    current_dict = {level: current_dict}

print(current_dict)

运行结果

{'one': {'two': {'three': {'four': {'key': 'value'}}}}}

代码解释

  1. 先初始化current_dict为最内层的{A: D},这是最终要嵌套在最深处的内容。
  2. 把B按.拆分得到层级列表['one', 'two', 'three', 'four'],反向遍历后顺序变成four、three、two、one。
  3. 每一次循环都创建一个新字典,用当前层级名作为键,把上一步的current_dict作为值,这样就实现了一层套一层的嵌套。
  4. 循环结束后,current_dict就是我们要的多层嵌套字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:39:32