Python的TypedDict基本用法

 更新时间:2025年12月25日 14:15:18   作者:小oo呆  
TypeDict是Python3.8引入的类型提示工具,用于定义具有固定键集合和各键对应特定类型的字典对象,它允许你为字典的每个键指定值的类型,使静态类型检查器能够更准确地验证字典的使用方式,本文介绍Python的TypedDict基本用法,感兴趣的朋友跟随小编一起看看吧

        TypeDict(Python中类型安全的字典)是Python 3.8引入的类型提示工具,用于定义具有固定键集合各键对应特定类型的字典对象。它允许你为字典的每个键指定值的类型,使静态类型检查器能够更准确地验证字典的使用方式。其核心特点如下:

特点说明
字典的键是预定义的字符串必须提前定义好所有键的名称和类型
每个键都有对应的值类型每个键的值都有明确的类型约束
支持必需字段和可选字段可以定义哪些字段必须提供,哪些可选
运行时不强制类型检查Python运行时不验证类型,但mypy等工具可以静态检查

一、基本用法

1、定义TypedDict

  • Python 3.8+ 直接使用 from typing import TypedDict
from typing import TypedDict
class User(TypedDict):
    name: str
    age: int
    is_active: bool
# 创建符合TypedDict定义的字典(在注解中声明)
user: User = {
    "name": "张三",
    "age": 30,
    "is_active": True
}

2、在函数中使用

def get_user_info(user: User) -> str:
    return f"用户名:{user['name']},年龄:{user['age']}"
print(get_user_info(user))  # 输出:用户名:张三,年龄:30

3、可选字段处理

(1)使用tool=False

class PartialUser(TypedDict, total=False):
    name: str
    age: int
    email: str
# 所有字段都是可选的
partial_user: PartialUser = {
    "name": "李四"
    # age和email可以不提供
}

(2)使用NotRequired

from typing_extensions import NotRequired
class UserProfile(TypedDict):
    name: str                    # 必需字段
    age: int                     # 必需字段
    email: NotRequired[str]      # 可选字段
    phone: NotRequired[str]      # 可选字段
# 可以不包含可选字段
profile1: UserProfile = {
    "name": "王五",
    "age": 25
}
# 也可以包含可选字段
profile2: UserProfile = {
    "name": "赵六",
    "age": 28,
    "email": "zhaoliu@example.com"
}

4、注意事项

(1)不强制校验

# 下面这段代码在运行时不会报错
# 但mypy等静态检查器会发出警告
user: User = {
    "name": "错误",  # 这是str,没问题
    "age": "三十",    # 应该是int,类型错误!
    "is_active": True
}

(2)不能在其中定义方法

# TypedDict只能定义键的类型,不能定义方法
class BadExample(TypedDict):
    name: str
    def greet(self) -> str:  # 错误!不允许方法
        return "Hello"

二、常见应用场景

1、校验API的响应格式

class APIResponse(TypedDict):
    success: bool
    data: NotRequired[list[dict]]
    error: NotRequired[str]
def process_response(response: APIResponse) -> None:
    if response["success"]:
        if "data" in response:
            print(f"处理数据:{response['data']}")
    else:
        if "error" in response:
            print(f"错误信息:{response['error']}")
# 使用示例
success_resp: APIResponse = {
    "success": True,
    "data": [{"id": 1, "name": "商品1"}]
}
error_resp: APIResponse = {
    "success": False,
    "error": "认证失败"
}

2、函数结构化返回值

class AnalysisResult(TypedDict):
    status: str
    score: float
    details: dict
def analyze_text(text: str) -> AnalysisResult:
    # 模拟分析逻辑
    return {
        "status": "completed",
        "score": 0.85,
        "details": {"length": len(text), "words": len(text.split())}
    }
result = analyze_text("这是一段测试文本")
# result的类型被明确为AnalysisResult,IDE可以提供智能提示

到此这篇关于Python的TypedDict基本用法的文章就介绍到这了,更多相关Python的TypedDict内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现检测文件的MD5值来查找重复文件案例

    Python实现检测文件的MD5值来查找重复文件案例

    这篇文章主要介绍了Python实现检测文件的MD5值来查找重复文件案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • python爬取一组小姐姐图片实例

    python爬取一组小姐姐图片实例

    大家好,本篇文章主要讲的是python爬取一组小姐姐图片实例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • python 双循环遍历list 变量判断代码

    python 双循环遍历list 变量判断代码

    这篇文章主要介绍了python 双循环遍历list 变量判断代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python实现日志按天分割

    python实现日志按天分割

    这篇文章主要为大家详细介绍了python实现日志按天分割,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 解读! Python在人工智能中的作用

    解读! Python在人工智能中的作用

    这篇文章主要帮助大家解读Python在人工智能中的作用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Python中多继承与菱形继承问题的解决方案与实践

    Python中多继承与菱形继承问题的解决方案与实践

    在Python这个灵活且功能强大的编程语言中,多继承是一个既强大又复杂的概念,它允许一个类继承自多个父类,从而能够复用多个父类的属性和方法,本文将深入解释Python中的多继承概念,详细剖析菱形继承问题,并探讨Python是如何解决这一难题的,需要的朋友可以参考下
    2024-07-07
  • 解决Tensorflow使用pip安装后没有model目录的问题

    解决Tensorflow使用pip安装后没有model目录的问题

    今天小编就为大家分享一篇解决Tensorflow使用pip安装后没有model目录的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python使用Matplotlib将爬取的CSV数据变成直观图表

    Python使用Matplotlib将爬取的CSV数据变成直观图表

    当你在电商网站爬取了10万条商品价格数据,或是从气象站抓取了3年的温度记录,面对密密麻麻的CSV表格时,是否感到无从下手,本文将带你完成一个完整的数据可视化实战:从爬取某招聘网站的职位信息,到用Matplotlib生成专业图表,需要的朋友可以参考下
    2025-10-10
  • Python使用CuPy模块实现高效数值计算

    Python使用CuPy模块实现高效数值计算

    CuPy是一个基于Python的GPU加速计算库,它提供了与NumPy相似的接口,可以在GPU上进行高效的数值计算,本文主要介绍一下CuPy的应用场景,并给出一些Python代码案例,需要的可以参考下
    2024-02-02
  • Pandas之read_csv()读取文件跳过报错行的解决

    Pandas之read_csv()读取文件跳过报错行的解决

    这篇文章主要介绍了Pandas之read_csv()读取文件跳过报错行的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04

最新评论