跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

如何便捷地访问和操作Python深层嵌套字典?

高效处理Python深层嵌套字典 本文探讨高效访问和操作Python深度嵌套字典的方法,尤其针对处理JSON数据或类似结构数据场景,避免冗余代码。我们将改进和扩展基于属性树访问和路径支持的方案。 方法一:属性树访问 通过属性访问(例如
my_obj.a.b.c
)访问嵌套字典值。 Python的
__getattr__
方法无法直接判断属性路径是否存在,访问不存在路径会引发
AttributeError
。 为解决此问题,需自定义类,在访问不存在路径时返回
None
或抛出
KeyError
。 立即学习 “ Python免费学习笔记(深入) ”; Python 3.14.3 微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。 下载 直接利用
dict
和
__getattr__
、
__setattr__
方法更直接。 无需将
__getitem__
设置为
dict.__getitem__
的别名。 更稳健的方法是修改
__getitem__
方法,在访问不存在键时创建新的
dotdictify
对象,动态构建属性树:
def __getitem__(self, key): if key not in self: dict.__setitem__(self, key, dotdictify()) return dict.__getitem__(self, key)
方法二:路径支持 使用点分隔符表示法(例如
'a.b.c'
)访问和设置嵌套字典值,需要修改
dotdictify
类以解析点分隔符表示法,递归访问和修改字典值。 改进后的
dotdictify
类如下:
class dotdictify(dict): # ... (省略部分代码,与原文答案相同) ...
此改进后的
dotdictify
类重写了
__setitem__
、
__getitem__
、
__contains__
和
setdefault
方法,支持点分隔符表示法。 它在设置值时自动创建不存在的嵌套字典,并正确处理
get()
和
setdefault()
方法。 测试代码验证了其功能的完整性。

相关文章