我正在尝试使用glom.assign
运算符进行深度分配,并且仅在列表中的一个子项上进行设置。复杂的是,要设置的正确子级取决于该子级的属性。我可以根据包含元素的属性使用assign
并Check
分配一些子项的值吗?
作为一个简单的例子,尝试从列表中获取浮点值是可行的。但是使用相同的规范assign
失败(为清楚起见隐藏了堆栈跟踪):
>>> from glom import glom, Check, SKIP, assign
>>> test = {"root": [{"name": "child1", "type": "bool", "value": True},
{"name": "child2", "type": "int", "value": 1,},
{"name": "child3", "type": "float", "value": 1.0}]}
>>> spec = ("root", [Check("type", equal_to="float", default=SKIP)], "0", "value")
>>> glom(test, spec)
1.0
>>> assign(test, spec, 2.0)
...
TypeError: path argument must be a .-delimited string, Path, T, or S
使用glom的assign时应该如何进行基于属性的过滤?
(我安装了 glom-20.11.0。)