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

d = {"a": {"b": {"c": 4}}}
l = ["a", "b", "c"]
for x in l:
    d = d[x]
print (d) # 4

我正在学习函数式编程,所以我只是尝试浮现在脑海的随机示例:)

最佳答案

使用 reduce() :

reduce(dict.__getitem__, l, d)

或者更好,使用 operator.getitem() :
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

Python 3将reduce()函数从内建函数移到了 functools.reduce() 中。

关于python - 遍历嵌套字典的任何函数式编程方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20324830/

10-10 15:33