You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

为字典添加类型提示时报错: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引入了对内置类型(比如dictlisttuple)直接进行下标式类型标注的支持,你的代码:

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

火山引擎 最新活动