首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建一个带有动态键的pydantic模型

创建一个带有动态键的pydantic模型
EN

Stack Overflow用户
提问于 2022-08-04 06:54:36
回答 1查看 381关注 0票数 1

我想为这个结构创建一个Pydantic模型:

代码语言:javascript
复制
{
  "key-1": ["value-1", "value-2"],
  "key-2": ["value-3"],
  "key-3": []
}

我第一次尝试

代码语言:javascript
复制
class MyModel(BaseModel):
  __root__ = Dict[str, List[str]]

  @root_validator(pre=True)
  def validate_all_the_things(cls, values):
    # check if keys and values match some regexes

但这带来了一个例外:

代码语言:javascript
复制
RuntimeError: no validator found for <class 'typing._GenericAlias'>, see `arbitrary_types_allowed` in Config

如果我将Dict更改为dict,则不会得到异常,但得到的对象将产生一个空的dict:

代码语言:javascript
复制
>>> MyModel(**{"key-1": ["value-1"]}).dict()
{}

我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-04 20:26:07

您在模型声明中有一个错误。用冒号代替等号。

代码语言:javascript
复制
from typing import List, Dict
from pydantic import BaseModel

class MyModel(BaseModel):
    __root__: Dict[str, List[str]]

然后您可以创建一个模型实例:

代码语言:javascript
复制
>>> my_instance = MyModel.parse_obj({"key-1": ["value-1"]})
>>> my_instance.dict()
{'__root__': {'key-1': ['value-1']}}

您可以在这里找到更多信息:自定义根类型

也请看这一节。也许你会在这里发现一些有趣的东西:动态模型创建

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73231505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档