获取给定点表示法的嵌套值

Dav*_*542 1 python

我的json中有以下结构:

obj = {
  'Name': 'David',
  'Car': {
           'Make': 'Ford',
           'Year': 2008
   }
}
Run Code Online (Sandbox Code Playgroud)

我得到了点符号来引用对象值,例如:

Car.Make ==> 'Form'
Run Code Online (Sandbox Code Playgroud)

给定一个字符串,例如"Car.Make",我将如何以编程方式获取属性?在上面的例子中,它将是:

obj.get('Car').get('Make')
Run Code Online (Sandbox Code Playgroud)

但是对于一个深度嵌套的对象,我将如何提取给定点表示法的值"Attr1.Attr2.Attr3...Attrn"

Kev*_*vin 5

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)
Run Code Online (Sandbox Code Playgroud)

结果:

Ford
Run Code Online (Sandbox Code Playgroud)

或者,以单行形式:

from functools import reduce
print(reduce(lambda a,b: a[b], s.split("."), obj))
Run Code Online (Sandbox Code Playgroud)