Glom назначается с помощью проверочного фильтра

Я пытаюсь использовать glom.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.)

0 ответов

Другие вопросы по тегам