我正在努力寻找更好的方法来实现这个目标:
d = {"a": {"b": {"c": 4}}}
l = ["a", "b", "c"]
for x in l:
d = d[x]
print (d) # 4
我正在学习函数式编程,所以我只是试着随意的例子来到我的脑海:)
答案 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()
。