Python 任何遍历嵌套字典的函数式编程方法?

Python 任何遍历嵌套字典的函数式编程方法?,python,dictionary,functional-programming,Python,Dictionary,Functional Programming,我正试图找到更好的方法来实现这一点: d = {"a": {"b": {"c": 4}}} l = ["a", "b", "c"] for x in l: d = d[x] print (d) # 4 我正在学习函数式编程,所以我只是在尝试随机出现的例子:)使用: 或者更好地使用: 演示: Python3将reduce()函数从内置移到内置。您正在间接调用d=d[“c”],这是4…您好,谢谢您的回答,但我想我没有正确地向您解释我的问题。请在下面回答。无论如何,谢谢你的帮助:)干杯!

我正试图找到更好的方法来实现这一点:

d = {"a": {"b": {"c": 4}}} 
l = ["a", "b", "c"]
for x in l:
    d = d[x]
print (d) # 4 
我正在学习函数式编程,所以我只是在尝试随机出现的例子:)

使用:

或者更好地使用:

演示:


Python3将
reduce()
函数从内置移到内置。

您正在间接调用d=d[“c”],这是4…您好,谢谢您的回答,但我想我没有正确地向您解释我的问题。请在下面回答。无论如何,谢谢你的帮助:)干杯!相关:为什么不简单地
dict.get
?@thg435:两者都起作用,如果一个键丢失,都会导致错误,但是
dict.\uuuu getitem\uuuuuu
错误会更清楚,我会说(
KeyError
vs.
AttributeError
)。从风格的角度来看,使用
dict.\uu getitem\uuu
还是
dad,k:d[k]
这里?@Eric:还有第三个选项:
dict.get
。我更喜欢这里的
dict.\uuu getitem\uuuu
;当缺少一个键时,错误消息会更清楚(
dict.get
将为您提供一个
TypeError:“NoneType”对象没有属性“\uu getitem”
)。
lambda
更冗长、更慢。@Eric:bah,我就是这么做的
operator.getitem()
是一个好主意,工作非常出色,将在这个答案中占有一席之地!
reduce(dict.__getitem__, l, d)
from operator import getitem

reduce(getitem, l, d)
>>> d = {"a": {"b": {"c": 4}}} 
>>> l = ["a", "b", "c"]
>>> from operator import getitem
>>> reduce(getitem, l, d)
4