【问题标题】:Type hints for nested defaultdict嵌套 defaultdict 的类型提示
【发布时间】: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\"

标签: python mypy python-typing defaultdict


【解决方案1】:

从...开始蟒蛇 3.9您可以使用 defaultdict 和 set 本身作为注释:

var: defaultdict[str, defaultdict[str, set]] = defaultdict(lambda: defaultdict(set))

对于早期的 Python 版本,输入模块中有一个特殊的 DefaultDict 类型:

from collections import defaultdict
from typing import DefaultDict, Set

var: DefaultDict[str, DefaultDict[str, Set]] = defaultdict(lambda: defaultdict(set))

【讨论】:

  • 与 dict 类似,DefaultDict 和 Set 在 Python 3.9 中被弃用,分别支持 defaultdict 和 set。
猜你喜欢
  • 2013-10-11
  • 1970-01-01
  • 2020-02-12
  • 2021-12-05
  • 2022-01-26
  • 2022-01-12
相关资源
最近更新 更多