Любой метод функционального программирования для перемещения вложенного словаря?

Я пытаюсь найти лучший способ реализовать это:

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

Я изучаю функциональное программирование, поэтому я просто пробую случайный пример, который приходит мне в голову:)

Ответ 1

Используйте 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().