You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypedDict运行时检查中捕获多余键?

解决TypedDict运行时验证无法检测多余键的问题

原代码使用Pydantic的TypeAdapter验证TypedDict时,即便开启strict=True也无法检测到多余字段,这是因为Pydantic默认允许TypedDict存在额外键。要实现多余键抛出异常的效果,需要在TypeAdapter的配置中明确禁止额外字段。

修改后的代码如下:

from typing import Any, TypeVar
from pydantic import TypeAdapter, ConfigDict
from typing_extensions import TypedDict

T = TypeVar('T')

def runtime_check_typed_dict(TypedDictClass: type[T], object_: Any) -> T:
    # 添加配置,禁止额外字段
    config = ConfigDict(extra='forbid')
    TypedDictValidator = TypeAdapter(TypedDictClass, config=config)
    return TypedDictValidator.validate_python(object_, strict=True)

class MyThing(TypedDict):
    key: str

obj_: Any = {'key': 'stuff', 'extra': 'this should throw!'}

runtime_check_typed_dict(MyThing, obj_)

关键修改说明

  • 导入pydantic的ConfigDict类,用于配置验证规则
  • 创建config对象并设置extra='forbid',表示严格禁止输入中存在TypedDict未定义的字段
  • 实例化TypeAdapter时传入该配置,结合strict=True即可实现严格的字段校验

运行修改后的代码,当输入包含多余键时,会抛出pydantic_core._pydantic_core.ValidationError异常,提示存在额外字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:29:51