我正在尝试找到一种更好的方法来实现这一点:
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/