I'd like to get a nested dict value with itemgetter
:
from operator import itemgetter
dct = {"name": {"en": "John"}}
getter = itemgetter("name", "en")
getter(dct)
The code gives me error:
Traceback (most recent call last):
File "/Users/alber.aleksandrov/PycharmProjects/Playground/sa/разное.py", line 5, in <module>
getter(dct)
KeyError: 'en'
How should I use itemgetter
to make it work?
you could go with functools reduce function
from functools import reduce, partial
dct = {"name": {"en": "John"}}
keys = ["name", "en"]
reduce(dict.get, keys, dct)
output:
Jonh
as a partial function
def get_itemgetter(keys):
def partial_func(dtc):
return reduce(dict.get, keys, dtc)
return partial_func
itemgetter = get_itemgetter(keys)
itemgetter(dct)