为字典添加类型提示时报错:TypeError: 'type' object is not subscriptable
解决字典类型提示引发的
TypeError: 'type' object is not subscriptable 错误 这个问题我太熟悉了!你遇到的是Python版本兼容性导致的类型提示写法问题——在Python 3.9之前的版本里,原生的dict类型并不支持像dict[int, int]这样的下标式类型标注,直接这么写就会触发'type' object is not subscriptable错误,因为此时dict只是一个普通的类型对象,没有实现下标访问的能力。
下面给你两种最直接的解决办法:
方法1:升级到Python 3.9或更高版本
从Python 3.9开始,PEP 585引入了对内置类型(比如dict、list、tuple)直接进行下标式类型标注的支持,你的代码:
memo: dict[int, int] = {0: 0, 1: 1} # *our base cases*
在Python 3.9+环境下可以直接正常运行,不需要做任何修改。
方法2:使用typing模块的Dict类型(兼容旧版本)
如果没法升级Python版本,那就改用标准库typing模块里的Dict类型来做标注,写法如下:
from typing import Dict memo: Dict[int, int] = {0: 0, 1: 1} # *our base cases*
这样在Python 3.5到3.8的版本里都能正常工作,不会再触发那个类型错误。
简单总结一下:
- Python 3.9+:直接用
dict[KeyType, ValueType] - Python 3.8及以下:导入
typing.Dict,用Dict[KeyType, ValueType]
内容的提问来源于stack exchange,提问作者Robert Li




