Я хочу использовать 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
Сложная рекурсивная инициализация класса Pydantic: как проверить нативные тип пидантического типа с помощью пользователь ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Нативные модули: реагируйте нативные носитые модульные подача камеры не видно
Anonymous » » в форуме Android - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-