itemgetter
python中是否有递归。假设你有一个像
d = {'a': (1,2,3), 'b': {1: (5,6)}}
Run Code Online (Sandbox Code Playgroud)
我想从d['a']
? 据我所知itemgetter
只会做一个级别,即让我a
或b
或两者兼而有之。
是否有一些巧妙的方式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)
我不喜欢“聪明”的方式。明显更好。
您可以非常轻松地编写一个沿下标列表迭代的 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)
归档时间: |
|
查看次数: |
829 次 |
最近记录: |