【发布时间】:2022-10-06 21:41:47
【问题描述】:
为defaultdict(lambda: defaultdict(set)) 编写类型提示的正确方法是什么?
我使用 Python 3.10.5 和 mypy 0.971,发现 mypy 返回错误,因为 var = defaultdict(lambda: defaultdict(set)) 没有类型提示。
前提
- 第一个defaultdict和第二个defaultdict的所有key都是
str。 - 第一个 defaultdict 的值是 defaultdict。第二个 defaultdict 的值为
set。 (这可能很明显。)
示例代码
from collections import defaultdict
var = defaultdict(lambda: defaultdict(set))
输出
test.py:2: error: Need type annotation for \"var\"
-
你知道键和值的类型吗?
-
在 pycharm 中,目前当我将鼠标悬停在它上面时,推断的类型是
defaultdict[Any, defaultdict[Any, set]]。所以我认为你只需要填写Any值。 -
@funnydman 嗨,对不起,我添加了信息
-
docs.python.org/3/library/typing.html#typing.DefaultDict 我现在明白
DefaultDict已被弃用,所以问题可能会重复,但答案应该不同。 @funnydman
标签: python mypy python-typing defaultdict