如何将嵌套 Python 字典转换为对象
为了方便起见,最好使用包含嵌套的字典的属性访问来访问数据字典和列表,类似于 JavaScript 的对象语法。例如:
d = {'a': 1, 'b': {'c': 2}, 'd': ["hi", {'foo': "bar"}]}
此数据应可按如下方式访问:
x = dict2obj(d) x.a 1 x.b.c 2 x.d[1].foo bar
制作这样的函数需要递归。这是一种为字典实现类似对象功能的方法:
class Struct: def __init__(self, **entries): self.__dict__.update(entries)
用法:
args = {'a': 1, 'b': 2} s = Struct(**args) s.a 1 s.b 2
替代解决方案:Namedtuples
对于 Python版本 2.6 及更高版本,请考虑利用 namedtuple 数据结构:
from collections import namedtuple MyStruct = namedtuple('MyStruct', 'a b d') s = MyStruct(a=1, b={'c': 2}, d=['hi'])
现在您拥有一个行为类似于对象的命名元组,可以对其字段进行属性访问。这提供了一个简洁且高度可读的解决方案。
以上是如何像对象一样访问嵌套的Python字典?的详细内容。更多信息请关注PHP中文网其他相关文章!