简体   繁体   English

嵌套 defaultdict 的类型提示

[英]Type hints for nested defaultdict

What is the right way to write type hints for defaultdict(lambda: defaultdict(set)) ?defaultdict(lambda: defaultdict(set))编写类型提示的正确方法是什么?

I use Python 3.10.5 and mypy 0.971, and find mypy returns an error because var = defaultdict(lambda: defaultdict(set)) doesn't have a type hint.我使用 Python 3.10.5 和 mypy 0.971,发现 mypy 返回错误,因为var = defaultdict(lambda: defaultdict(set))没有类型提示。

Premises前提

  • All keys of the first defaultdict and the second defaultdict are str .第一个 defaultdict 和第二个 defaultdict 的所有键都是str
  • Values of the first defaultdict are defaultdict.第一个 defaultdict 的值是 defaultdict。 Values of the second defaultdict are set .设置第二个 defaultdict 的set (This may be obvious.) (这可能很明显。)

Sample code示例代码

from collections import defaultdict
var = defaultdict(lambda: defaultdict(set))

Output Output

test.py:2: error: Need type annotation for "var"

There's a special DefaultDict type from typing module:输入模块中有一个特殊的DefaultDict类型:

from collections import defaultdict
from typing import DefaultDict, Set

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

or just use defaultdict and set itself as @chepner mentioned:或者只是使用defaultdict并将自己set为@chepner 提到的:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM