2.2.1 什么是 TypedDict
TypedDict 是 Python 3.8+ 引入的一种类型提示工具,即带有类型声明的字典结构。适合需要快速定义字典结构且无需 Pydantic 重量级功能的场景。
1、普通 dict 没有类型信息:
![图片[1]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-730.png)
2、 TypedDict 可以进一步说明:
- 这个字典应该有哪些字段
- 每个字段的类型是什么
- TypedDict 主要是类型声明,不是运行时强校验器。
举例:
![图片[2]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-731.png)
实例化字典时给出的字段名称和TypedDict不完全一致,此时IDE的静态类型检查会标记。
![图片[3]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-732.png)
但不会导致运行时异常,输出如下所示
![图片[4]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-733.png)
2.2.2 基本使用
Annotated的使用
Annotated 用来在“类型”之外,再附加一些额外信息,即元数据。类似于Pydantic 的Field 。
基本形式:
Annotated[类型1 , 附加信息1, 附加信息2, ...]
举例的前提:
使用CloseAI平台的gpt模型:
![图片[5]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-734.png)
![图片[6]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-735.png)
使用OpenRouter平台的gpt模型:
![图片[7]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-736.png)
举例1:返回简单结构
![图片[8]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-737.png)
输出如下:
![图片[9]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-738.png)
举例2:返回嵌套结构
![图片[10]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-739.png)
输出如下:
![图片[11]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-740.png)
举例3:…的使用
说明:与模型提供商有关系
使用CloseAI平台gpt模型:
![图片[12]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-741.png)
![图片[13]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-742.png)
输出
![图片[14]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-743.png)
使用OpenRouter平台gpt模型:
![图片[15]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-744.png)
![图片[16]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-745.png)
说明:上述代码的… 是Python的字面量,等价于Ellipsis ,可以理解为占位符。下游框架(如LangChain)可以对… 作定制化处理,如LangChain中Annotated的… 表示当前字段是必须存在的,不可省略,用来指示模型的输出。
再比如:
![图片[17]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-746.png)
![图片[18]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-747.png)
输出
![图片[19]-2.2 模式2:TypedDict-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-748.png)
director 和rating 的信息都是缺失的,但是前者被标记为必填,因此输出的字典包含该字段但是值为空字符串,而rating 字段被省略了。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
















请登录后查看评论内容