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

时间:2013-12-02 09:29:06

标签: python dictionary functional-programming

我正在努力寻找更好的方法来实现这个目标:

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

我正在学习函数式编程,所以我只是试着随意的例子来到我的脑海:)

1 个答案:

答案 0 :(得分:22)

使用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()