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

构建多层嵌套字典的最优方法探讨

构建多层嵌套字典的更优方法

你当前用try-except的方式虽然可行,但代码重复且不够简洁,下面是几种更优的实现方式:

方法一:使用collections.defaultdict递归嵌套

利用defaultdict可指定默认值类型的特性,递归定义嵌套字典,无需手动判断层级是否存在:

from collections import defaultdict

def nested_dict():
    return defaultdict(nested_dict)

d = nested_dict()
level1 = "some level1 value"
level2 = "some level2 value"
level3 = "some level3 value"
data = "some data"

# 直接赋值,不存在的层级会自动创建空字典
d[level1][level2][level3] = data

# 如需转为普通字典(可选操作)
d = dict(d)

方法二:使用字典的setdefault方法链式调用

setdefault会检查键是否存在,不存在则设置指定默认值并返回该值,存在则直接返回对应值,适合固定层级的场景:

d = {}
level1 = "some level1 value"
level2 = "some level2 value"
level3 = "some level3 value"
data = "some data"

# 链式调用完成层级初始化与数据赋值
d.setdefault(level1, {}).setdefault(level2, {})[level3] = data

这种方式比try-except更紧凑,一行就能完成层级创建和数据写入。

方法三:用functools.reduce处理任意层数的嵌套

如果层级数量不固定(比如可能是2层、3层或更多),可以用reduce动态逐层构建嵌套结构:

from functools import reduce

d = {}
keys = ["some level1 value", "some level2 value", "some level3 value"]
data = "some data"

# 逐层获取或创建字典,最后一层赋值
reduce(lambda current_dict, key: current_dict.setdefault(key, {}), keys[:-1], d)[keys[-1]] = data

这种方法灵活性最高,不管层级多少,传入keys列表即可处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:21:01