如何像对象一样访问嵌套的Python字典?

Mary-Kate Olsen
发布: 2024-11-11 04:51:03
原创
703 人浏览过

How to Access Nested Python Dictionaries Like Objects?

如何将嵌套 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板