Сложная рекурсивная инициализация класса Pydantic: как проверить нативные тип пидантического типа с помощью пользовательPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Сложная рекурсивная инициализация класса Pydantic: как проверить нативные тип пидантического типа с помощью пользователь

Сообщение Anonymous »

Я хочу использовать Pydantic для моделирования «картезианской таблицы», представленной в качестве вложенного словаря. Вот пример того, что я могу ожидать в качестве ввода в модель oundestCounts :
{
"x1": {
"y1": {
"z1": 5,
"z2": 5
},
"y2": {
"z1": 7,
"z2": 3
},
"y3": {
"z1": 8,
"z2": 2
}
},
"x2": {
"y1": {
"z1": 1,
"z2": 9
},
"y2": {
"z1": 2,
"z2": 8
},
"y3": {
"z1": 4,
"z2": 6
}
}
}
< /code>
Ключи на каждом уровне всегда будут строками. Значения на конечном уровне будут int, а значения на нефинантном уровне будут рекурсивным случаем. Я хочу моделировать его таким образом, чтобы проверка нативного типа поддерживалась при создании модели.from __future__ import annotations
from pydantic import BaseModel

class NestedCounts(BaseModel):
counts: dict[str, int|NestedCounts]

@classmethod
def from_dict(cls, data: dict) -> NestedCounts:
if all(isinstance(v, int) for v in data.values()):
return cls(counts=data)
elif all(isinstance(v, dict) for v in data.values()):
return cls(counts={k: NestedCounts.from_dict(v) for k, v in data.items()})
else:
raise ValueError(f"Invalid dependent variable probabilities. All values must be ints or all values must be dictionaries:\n{data}")
< /code>
Есть ли лучший способ моделировать такую ​​схему ввода? Я хочу убедиться, что все, что я реализую, позволяет проверить нативного типа Pydantic.


Подробнее здесь: https://stackoverflow.com/questions/795 ... dantic-typ
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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