$ python3 -q
>>> data_obj = {
... 'alpha': {
... 'bravo': [
... {'charlie': 1},
... {'delta': 2},
... ]
... }
... }
>>>
>>> node_keys = ['alpha', 'bravo', 0, 'charlie']
>>>
>>> from functools import reduce
>>> from operator import getitem
>>>
>>> reduce(getitem, data_obj, node_keys)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers or slices, not str
>>>
>>> data_obj[node_keys[0]][node_keys[1]][node_keys[2]][node_keys[3]]
1
>>> getitem(
... getitem(
... getitem(
... getitem(data_obj, node_keys[0]),
... node_keys[1]
... ), node_keys[2]
... ), node_keys[3]
... )
1
>>>
>>> data_obj.__getitem__(node_keys[0])\
... .__getitem__(node_keys[1])\
... .__getitem__(node_keys[2])\
... .__getitem__(node_keys[3])
1
>>>
Created
October 19, 2018 02:33
-
-
Save nballenger/f2116aef22ddd735d722f0ef7cd79874 to your computer and use it in GitHub Desktop.
What about reducing over getitem doesn't work?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment