Проверьте вложенный словарь с помощью Python/Marshmallow, если имена полей являются переменными.Python

Программы на Python
Anonymous
Проверьте вложенный словарь с помощью Python/Marshmallow, если имена полей являются переменными.

Сообщение Anonymous »

В этом примере...

Код: Выделить всё

{
"A-B": {
"x": {
"name": "x A-B"
},
"y": {
"level": 6
}
},
"B-C": {
"x": {
"name": "x B-C"
},
"y": {
"level": 9
}
},
"A-C": {
"x": {
"name": "x A-C"
}
}
}
Где «A», «B» и «C» — состояния, а «x» и «y» — разные слова. «x» может иметь ключ «name» со строковым значением, а «y» может иметь ключ «level» с целочисленным значением.
И «x», и «y» являются необязательно.
Я создал схемы для «x» и «y»...

Код: Выделить всё

def X_Schema( Schema ):
name = fields.String( required = True )

def Y_Schema( Schema ):
level = fields.Integer( required = True )
Я знаю, что мне нужно использовать некоторую вложенность, но я не могу понять, как это будет работать, если «ключ» верхнего уровня не фиксирован. т. е. это могут быть «A-B», «AC», «BC» и т. д. «x» и «y» могут встречаться только один раз в значении верхнего уровня, оба являются необязательными.
I хотелось бы сделать что-то вроде...

Код: Выделить всё

def StateSchema( Schema ):
???? = fields.Dict( keys = < "x" or "y" >, values =  )
Лично я не думаю, что это возможно с помощью зефира. Я не контролирую этот ввод, поэтому я практически не могу его проверить, если это невозможно сделать с помощью Marshmallow.
Я зашел так далеко...

Код: Выделить всё

class StateSchema( Schema )

a_b = fields.Dict( keys = fields.String(), values = fields.Nested( X_Schema() ), required = False, data_key = "A-B" )

b_c = fields.Dict( keys = fields.String(), values = fields.Nested( X_Schema() ), required = False, data_key = "B-C" )
но я считаю, что это неоптимально, поскольку мне нужно создать поля для всех возможных состояний.... :(

Подробнее здесь: https://stackoverflow.com/questions/782 ... -are-varia

Вернуться в «Python»