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)