recursive itemgetter for python



python中是否存在递归的itemgetter ?假设你有一个像

这样的对象
d = {'a': (1,2,3), 'b': {1: (5,6)}}

,我想从d['a']中得到元组的第一个元素?据我所知,itemgetter只会做一个级别,即给我ab或两者。

是否有某种巧妙的方法将itertoolsitemgetter结合起来以产生期望的结果?

所以基本上我想调用的是

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

我不喜欢"聪明"的方法。

您可以很容易地编写一个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

最新更新