Python 在pydantic中可以有任意的密钥名吗?
我试图为Python 在pydantic中可以有任意的密钥名吗?,python,types,pydantic,Python,Types,Pydantic,我试图为pydantic模型模拟具有任意键名的typescripts接口的类似行为,但遇到了一些问题 在TS中考虑以下因素: export interface SNSMessageAttributes { [name: string]: SNSMessageAttribute; } 有可能在pydantic中实现这一点吗 下面是我的python示例代码: 从pydantic导入BaseModel,将_obj_解析为 从键入导入可选 类值(基本模型): 值:str 类型:str 类别Me
pydantic
模型模拟具有任意键名的typescripts接口的类似行为,但遇到了一些问题
在TS中考虑以下因素:
export interface SNSMessageAttributes {
[name: string]: SNSMessageAttribute;
}
有可能在pydantic中实现这一点吗
下面是我的python示例代码:
从pydantic导入BaseModel,将_obj_解析为
从键入导入可选
类值(基本模型):
值:str
类型:str
类别MessageAttributes(基本模型):
任意键:可选[值]
类别Mymodel(基本模型):
MessageAttributes:可选[MessageAttributes]
数据={“MessageAttributes”:{“ArbitrayKey”:{“类型”:“字符串”,“值”:“测试字符串”}}
parsed=parse_obj_as(Mymodel,data)
打印(parsed.MessageAttributes.arbirykey.Value)
#测试字符串
在本例中,属性ArbitraryKey
可以是任何内容。但我不可能硬编码所有可能的密钥名称。例如,如果密钥名不是任意密钥
,而是某个测试密钥
,该怎么办
我知道我可以在Config
中使用extra='allow
,但这不会给出使用parse\u obj\u as
我的问题是,如果可能的话,我可以在pydantic中为属性名做一些类似于[name:string]
的事情吗?经过讨论,这正是我所希望的
从pydantic导入BaseModel,将_obj_解析为
输入import Dict,可选
从pydantic导入解析
类值(基本模型):
值:str
类型:str
类别Mymodel(基本模型):
MessageAttributes:可选[Dict[str,Values]]
数据={“MessageAttributes”:{“ArbitrayKey”:{“类型”:“字符串”,“值”:“测试字符串”}}
parsed=Mymodel.parse_obj(数据)
打印(已解析)
打印(已解析的.MessageAttributes['ArricryKey'].Type)