我的json中有以下结构:
obj = {
'Name': 'David',
'Car': {
'Make': 'Ford',
'Year': 2008
}
}
我给出了点符号来引用对象值,例如:
Car.Make ==> 'Form'
给定一个字符串,例如"Car.Make"
,我将如何以编程方式获取属性?在上面的例子中,它将是:
obj.get('Car').get('Make')
但是对于深度嵌套的对象,如何在"Attr1.Attr2.Attr3...Attrn"
的点符号中提取值?
答案 0 :(得分:2)
obj = {
'Name': 'David',
'Car': {
'Make': 'Ford',
'Year': 2008
}
}
s = "Car.Make"
x = obj
keys = s.split(".")
for key in keys:
x = x[key]
print(x)
结果:
Ford
或者,以单行形式:
from functools import reduce
print(reduce(lambda a,b: a[b], s.split("."), obj))
答案 1 :(得分:0)
以下是Stackoverflow的一些答案,它提出了一个自定义字典类,它实现__getattr__
和__setattr__
来访问字典项: