python的递归itemgetter

Mat*_*yra 3 python recursion

itemgetterpython中是否有递归。假设你有一个像

d = {'a': (1,2,3), 'b': {1: (5,6)}}
Run Code Online (Sandbox Code Playgroud)

我想从d['a']? 据我所知itemgetter只会做一个级别,即让我ab或两者兼而有之。

是否有一些巧妙的方式itertools与 with结合itemgetter以产生所需的结果。

所以基本上我想要能够打电话的是

from operator import itemgetter
d = {'a': (1,2), 'b': (4, (5,))}
itemgetter({'a': 0})(d) --> 1
itemgetter({'b': 0})(d) --> 4
itemgetter({'b': {1: 0}})(d) --> 5

d = {'a': {'b': (1,2,3)}}
itemgetter({'a': {'b': 2}})(d) --> 3
Run Code Online (Sandbox Code Playgroud)

nig*_*222 8

我不喜欢“聪明”的方式。明显更好。

您可以非常轻松地编写一个沿下标列表迭代的 getter:

def getter(x, *args):
    for k in args:
        x = x[k]
    return x

>>> d = {'a': (1,2,3), 'b': {1: (5,6)}}
>>> getter(d, 'a', 0)
1
Run Code Online (Sandbox Code Playgroud)