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

如何用递归基于给定键列表创建嵌套字典

遍历键列表创建嵌套字典的实现

问题背景

给定初始字典和键列表:

my_dict = {'root': {}}
my_keys = ['foo', 'bar', 'lorem', 'ipsum']

需要生成如下嵌套字典:

my_dict = {
    'root': {
        'foo': {
            'bar': {
                'lorem': {
                    'ipsum': {}
                }
            }
        }
    }
}

尝试递归实现时遇到逻辑瓶颈,以下是可行的递归和迭代两种实现方案。


递归实现

递归的核心是逐层深入处理键列表,每次处理一个键后进入下一层级继续处理剩余键:

def build_nested(current_dict, keys):
    # 键列表为空时终止递归
    if not keys:
        return
    # 取出第一个待处理的键
    current_key = keys[0]
    # 在当前层级字典中创建键,值为空字典
    current_dict[current_key] = {}
    # 递归处理剩余的键,传入新的层级字典
    build_nested(current_dict[current_key], keys[1:])

# 使用示例
my_dict = {'root': {}}
my_keys = ['foo', 'bar', 'lorem', 'ipsum']
build_nested(my_dict['root'], my_keys)
print(my_dict)

逻辑说明

  1. 递归终止条件:当keys列表为空时,说明所有键已处理完成,直接返回。
  2. 每次取出列表的第一个键,在当前字典中创建该键并赋值为空字典。
  3. 将刚创建的空字典作为新的当前层级,递归调用函数处理剩下的键。

迭代实现

如果觉得递归逻辑绕,迭代方式更直观,通过跟踪当前层级逐步构建嵌套结构:

my_dict = {'root': {}}
my_keys = ['foo', 'bar', 'lorem', 'ipsum']

# 从root对应的子字典开始,跟踪当前操作的层级
current_level = my_dict['root']
for key in my_keys:
    # 在当前层级创建键,值为空字典
    current_level[key] = {}
    # 移动到下一层级,继续处理下一个键
    current_level = current_level[key]

print(my_dict)

逻辑说明

  1. 用current_level变量记录当前正在操作的字典层级,初始指向my_dict['root']。
  2. 遍历每个键,在当前层级字典中创建该键并赋值为空字典。
  3. 将current_level更新为刚创建的空字典,进入下一层级,直到所有键处理完毕。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:42:48