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

如何基于键列表递归生成嵌套字典,现有实现无法得到预期输出

嵌套字典递归生成问题解决方案

原函数问题点

  • 递归调用时始终传入同一个check_dict对象,没有为每一级键创建新的空字典,导致所有层级的修改都作用在同一个字典实例上
  • 把递归返回的完整字典直接赋值给当前键,会产生多余的嵌套层级
  • check_dict和size属于冗余参数,不需要外部传入,函数内部可自行处理

修正后的递归函数实现

def nested_dict(keys_list, value):
    # 递归终止条件:只剩最后一个键,直接返回对应键值对的字典
    if len(keys_list) == 1:
        return {keys_list[0]: value}
    # 递归逻辑:当前键对应的值,为剩余键列表生成的嵌套字典
    return {keys_list[0]: nested_dict(keys_list[1:], value)}

调用测试

list1 = ['info', 'websites', 'site']
result = nested_dict(list1, 'check')
print(result)
# 输出符合预期:{'info': {'websites': {'site': 'check'}}}

如果需要保留原函数的参数设计,只需要调整递归传参逻辑,每次为下一级创建新的空字典即可:

def nested_dict(keys_list, value, check_dict=None, size=None):
    # 初始化默认参数
    if check_dict is None:
        check_dict = {}
    if size is None:
        size = len(keys_list)
    if size != 1:
        next_dict = {}
        check_dict[keys_list[0]] = next_dict
        # 把新的空字典传入下一级递归
        nested_dict(keys_list[1:], value, next_dict, size-1)
        return check_dict
    else:
        check_dict[keys_list[0]] = value
        return check_dict

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:09:02