Use reduce()
:
reduce(dict.__getitem__, l, d)
or better still, using operator.getitem()
:
from operator import getitem
reduce(getitem, l, d)
Demo:
>>> d = {"a": {"b": {"c": 4}}}
>>> l = ["a", "b", "c"]
>>> from operator import getitem
>>> reduce(getitem, l, d)
4
Python 3 moved the reduce()
function out of the built-ins and into functools.reduce()
.