如何使用Python内置库通过类型提示指定返回字典的键对应类型
答案
可以实现,Python 内置的typing模块提供了专门的解决方案,你写的直接在dict参数里写键值对类型的语法不合法,需要用TypedDict实现逐键指定类型的效果:
方案:使用 TypedDict(Python 3.8+ 内置支持)
TypedDict是专门用于标注固定键、每个键对应固定类型的字典结构的类型工具,使用示例如下:
from typing import TypedDict # 先预定义返回字典的结构 class FooReturn(TypedDict): key1: set key2: bool key3: int # 函数直接用定义好的结构做返回值标注 def foo() -> FooReturn: # 业务代码 my_dict = { "key1": {1, 2, 3}, "key2": True, "key3": 100 } return my_dict
补充说明:
- 所有主流类型检查工具(mypy、pyright、Pycharm内置类型检查等)都能识别
TypedDict标注,会自动校验返回字典的键是否缺失、对应值的类型是否匹配 - 如果使用Python 3.7版本,可以引入
from __future__ import annotations延迟类型注解求值,配合typing_extensions模块的TypedDict使用(3.8及以上版本无需额外依赖,TypedDict已纳入内置typing模块) - 普通的
dict[K, V]泛型标注只能统一指定所有键的类型、所有值的类型,无法实现逐个键指定不同类型的需求,只适合键不固定的动态字典场景
内容的提问来源于stack exchange,提问作者FountainTree
相关产品推荐
相关产品推荐

