python中是否存在递归的itemgetter
?假设你有一个像
d = {'a': (1,2,3), 'b': {1: (5,6)}}
,我想从d['a']
中得到元组的第一个元素?据我所知,itemgetter
只会做一个级别,即给我a
或b
或两者。
是否有某种巧妙的方法将itertools
和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
我不喜欢"聪明"的方法。
您可以很容易地编写一个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