Python 在格洛姆切片?

Python 在格洛姆切片?,python,glom,Python,Glom,简而言之: 我怎样才能在格洛姆切片?也就是说,能够指定要从多个索引(例如y=x[(2,5,11)])中提取,而不仅仅是单个索引(例如y=x[2]) 简单示例:假设我有以下数据: d={'u result':[[1,'a'],[2,'b'],[3,'c']] 要提取列表的“_result”列表的命名zip(*),我可以执行以下操作: 来自glom导入规范的 提取=规格(“”“结果”, lambda x:list(zip(*x)), lambda x:{'x':x[0],'y':x[1]}).gl

简而言之: 我怎样才能在格洛姆切片?也就是说,能够指定要从多个索引(例如
y=x[(2,5,11)]
)中提取,而不仅仅是单个索引(例如
y=x[2]

简单示例:假设我有以下数据:

d={'u result':[[1,'a'],[2,'b'],[3,'c']]
要提取列表的“_result”列表的命名zip(*),我可以执行以下操作:

来自glom导入规范的

提取=规格(“”“结果”,
lambda x:list(zip(*x)),
lambda x:{'x':x[0],'y':x[1]}).glom
我会得到我想要的:

>>摘录(d)
{'x':(1,2,3),'y':('a','b','c')}
但我希望能做一些像

extract=Spec(('u result',{'x':'*.0','y':'*.1'})).glom

extract=Spec(“'u result',{'x':'[:].0','y':'[:].1'})).glom
更高级的愿望…

我可以想象这样的语法糖能够指定如下路径

“a.[2:3,-5:.{'foo','bar'}.name”
可以派上用场。如果使用显式的glom.Path定义,甚至(可能更安全),例如

从glom导入路径
路径=路径('a',
((切片(2,3,无),切片(-5,无,无)),),
{'foo','bar'},
"姓名")
在我(可能不是最佳选择)的迷你语言中,
{'foo','bar'}
意味着我们正在提取这两个键的值

>>> d = [[1, 'a'], [2, 'b'], [3, 'c']]
>>> glom(d, {'x': [T[0]], 'y': [T[1]]})
{'x': [1, 2, 3], 'y': ['a', 'b', 'c']}
glom联合创始人:此处:-)

我已经为你保驾护航了。字符串被解析并转换为实例。路径方便,测试准确

如果要将它们混合在一起,可以使用元组连接它们,也可以使用显式路径构造函数

>>> Path('a.b', T[1:3])
Path('a.b', T[slice(1, 3, None)])