Any Functional Programming method of traversing a nested dictionary?
I am trying to find a better way to implement this:
d = {"a": {"b": {"c": 4}}}
l = ["a", "b", "c"]
for x in l:
d = d[x]
print (d) # 4
I am learning functional programming so I am just trying random example that come to my head :)
Solution 1:
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()
.