python的递归项目集

时间:2016-10-26 09:07:27

标签: python recursion

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

1 个答案:

答案 0 :(得分:3)

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

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

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

>>> d = {'a': (1,2,3), 'b': {1: (5,6)}}
>>> getter( d, 'a', 0)
1