工作中需要从DB中或者文件中读取配置信息,解析成一个多重嵌套的复杂字典供项目使用。每次取值和更新的时候都比较麻烦,取下标需要捕获KeyError
,用get
多取几层又觉得不够优雅。于是采用addict
包将普通的字典转化成一个对象,通过属性的方式赋值取值。使得后续操作更加简便且易读,还可以预防不必要的异常出现,强烈推荐。
文档:https://github.com/mewwts/addict/blob/master/README.md
字面理解就是高级字典(我猜的,逃),在dict
的基础上封装了一层,使其能够像操作属性一样使用字典。官方打趣说是用完能让你上瘾的好东西(笑)。
pip install addict
from addict import Dict
configs = Dict()
configs.platform.status = "on"
configs.platform.web.task.name = "测试-1204"
configs.platform.web.periods.start = "2020-10-01"
configs.platform.web.periods.end = "2020-10-31"
效果如下
task_configs = {
"status": "on",
"platform": {
"web": {
"task": {
"name": "测试-1204"
},
"periods": {
"start": "2020-10-01",
"end": "2020-10-31"
}
}
}
}
获取不存在的key
时会返回一个空字典,不用担心报KeyError
app_configs = configs.platform.app
assert app_configs == {}
原文:https://www.cnblogs.com/kangyuqi/p/13871693.html