在写一个项目的时候,有时需要读取配置文件(json,yaml 格式),通常读取后会存成字典(Dict)的形式,这种形式并不方便后续访问相关参数(代码不好看),因此我们希望能够将其更改为对象(Object),从而能直接使用点来访问相关参数。
https://stackoverflow.com/questions/1305532/convert-nested-python-dict-to-object 上分享了非常多的解决方法,下面推荐我认为最好的。当然,如果有其他需求也可以参考上述链接,查看其他方法。
>>> from munch import DefaultMunch
>>> d = {'a': 1, 'b': {'c': 2}, 'd': ["hi", {'foo': "bar"}]}
>>> obj = DefaultMunch.fromDict(d)
>>> obj.b.c
2
>>> obj.a
1
>>> obj.d[1].foo
'bar'
>>> obj.d
['hi', DefaultMunch(None, {'foo': 'bar'})]
我推荐的这种方法需要先安装 munch 包,它有以下优点:
- 速度快
- 适用于递归字典
- 当访问中间元素时,依然能输出相关信息,便于 debug(见最后一行)