Python addict 库使用详解
在 Python 开发里,处理嵌套字典往往意味着要写一堆 dict['key']['sub'] 这样的代码,既冗长又容易出错。addict 库就是为了解决这个问题而生的,它让你能用点号操作符像访问对象属性一样访问字典,代码瞬间清爽不少。它的核心类是 Dict。
快速上手
先通过 pip 安装:
pip install addict
引入后创建一个实例,你会发现赋值变得非常直观:
from addict import Dict
data = Dict()
data.name = "Tom"
data.age = 21
print(data) # {'name': 'Tom', 'age': 21}
print(data.name) # 'Tom'
print(data['name']) # 当然,方括号访问依然有效
自动递归嵌套
这才是 addict 真正好用的地方。你不需要提前初始化中间层的字典,直接给深层属性赋值,它会自动帮你把路径建好。
from addict import Dict
data = Dict()
data.user.info.name = "Alice"
data.user.info.age = 22
print(data) # {'user': {'info': {'name': 'Alice', 'age': 22}}}
print(data.user.info.name) # 'Alice'
不过要注意,这个'自动创建'的特性是一把双刃剑。有时候你可能只是想读取一个不存在的键,结果却不小心往字典里塞了个空结构进去,调试起来会头疼。所以用之前最好确认一下业务逻辑是否允许这种隐式创建。
兼容性与转换
别担心它会破坏原有习惯,addict 对象几乎完美兼容内建字典的方法。你可以照常调用 keys()、items(),也可以用 del 删除属性。
data.keys()
data.items()
del data.name
当需要把数据传给只认原生字典的函数时,用 to_dict() 转回去就行:
normal_dict = data.to_dict()
序列化方面也没问题,直接配合 json 模块使用:
json
addict
d = (user=)
json_str = json.dumps(d)
(json_str)

