json.AttrDict - 让字典也可像对象一样属性访问在Python中,我们常用dict对象来储存键值对数据。但是,dict对象只支持使用[]来访问键对应的值,而不支持.属性访问的方式。例如,如果我们有一个dict:
user = {'name': 'John', 'age': 30}
要访问name对应的值,只能使用user['name'],而不能使用user.name。这在许多情况下不是很方便,特别是当对JSON数据解析得到的dict对象进行访问时。如果可以使用.属性访问,无疑会更加优雅简洁。为此,Python在3.12版本中新增了json.AttrDict对象。它继承自dict,所以具有所有dict的功能。但同时也支持.属性访问方式。我们可以很简单地如下创建一个AttrDict对象:
import json
user = json.AttrDict({'name': 'John', 'age': 30})
print(user.name) # John
print(user['name']) # John
可以看到,AttrDict同时支持.属性访问和[]方括号访问,这为我们带来了极大的方便。而要从JSON字符串创建AttrDict对象,只需要在json.loads()中传入object_hook参数:
data = '{"name": "John", "age": 30}'
user = json.loads(data, object_hook=json.AttrDict)
print(user.name) # John
如果获取一个不存在值,就会AttributeError报错
领取专属 10元无门槛券
私享最新 技术干货