You need to enable JavaScript to run this app. 如何将Python字典键作为Pydantic模型字段通过点运算符访问
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python字典键作为Pydantic模型字段通过点运算符访问

这个需求完全可以实现,你遇到的报错是因为Python的类型注解仅作标注用途,不会自动触发类型转换:你向函数传入的依然是原生字典对象,字典本身不支持通过点运算符访问键,才会抛出AttributeError。

具体修改方案

方案1:调用函数时手动将字典转为Pydantic模型实例

传参时用字典解包构造Person实例即可,修改后的代码如下:

from pydantic import BaseModel

class Person(BaseModel):
    name: str
    age: int

def some_function(data: Person):
    abc = data.name
    print(abc)


person = {'name':'tom','age':12}
# 手动构造Person实例后传入
some_function(Person(**person))

如果你使用的是Pydantic V2版本,更推荐用model_validate方法做转换,对嵌套结构、字段校验的兼容性更好:

some_function(Person.model_validate(person))

方案2:函数内部自动兼容字典输入

如果不想改动调用侧的传参逻辑,可以在函数内部先做类型转换,同时适配字典和模型实例两种输入:

from pydantic import BaseModel

class Person(BaseModel):
    name: str
    age: int

def some_function(data: Person | dict):
    # 输入为字典时自动转成Person实例
    if isinstance(data, dict):
        data = Person.model_validate(data)
    abc = data.name
    print(abc)


person = {'name':'tom','age':12}
# 可直接传入字典
some_function(person)

内容的提问来源于stack exchange,提问作者Naxi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 08:39:00