在Python中以"foo.bar.baz"的方式访问嵌套dict中的内容
我们首先举一个多级嵌套的dict的例子,后面也会用这个例子来结合代码说明: obj = { "foo": { "bar": { "baz": 5 } } } javascript中,可以通过lodash的get方法来获取上面的object中形如"foo.bar.baz"的路径所对应的值,比如_.get(obj, "foo.bar.baz")。那么在Python中需要如何操作呢?一个简单的方法是使用functools中的reduce方法来完成: import functools path = "foo.bar.baz" value = functools.reduce(dict.get, path.split('.'), obj) # value == 5 上面代码采用的是一种非常聪明的方法,巧妙的的通过reduce函数的使用,把一般来说需要通过循环和递归才能解决的问题通过一行代码就解决了 如果在Python 3.8版本之后,我们可以通过list comprehension的walrus operator(就是:=)来做另外一个比较简洁的实现: path = "foo.bar.baz" ...
