1

我正在尝试使用glom.assign运算符进行深度分配,并且仅在列表中的一个子项上进行设置。复杂的是,要设置的正确子级取决于该子级的属性。我可以根据包含元素的属性使用assignCheck分配一些子项的值吗?

作为一个简单的例子,尝试从列表中获取浮点值是可行的。但是使用相同的规范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。)

4

0 回答 0