我有一个字典如下
my_dict = {
"key_1": "value_1",
"key_2": {
"key_1": True,
"key_2": 1200
}
"key_3": True,
}
并且在我的类中
@dataclass
class TestClass:
my_dict: typing.Dict[{str, str}, {str, typing.Dict[{str, bool}, {str, int}]}]
上面的声明是不正确的。
如果我想为 my_dict 添加类型它应该是什么以及如何编写结构,因为我有不同的类型价值观?
from typing import Dict, Union
@dataclass
class TestClass:
my_dict: Dict[str, Union[str, Dict[str, Union[bool, int]]]]
解释:
-
Dict[str, ...]
: 这指定了my_dict
是一个字典,其中键的类型是str
。 -
Union[str, ...]
: 这指定了字典的值可以是多种类型中的一种,在本例中是str
或另一个字典。 -
Dict[str, Union[bool, int]]
: 这指定了字典的值中嵌套的字典,其中键的类型是str
,值的类型可以是bool
或int
。
换句话说,这种类型声明表示:
-
my_dict
是一个字典。 - 它的键必须是字符串。
-
它的值可以是:
- 字符串
- 另一个字典,该字典的键是字符串,值可以是布尔值或整数。
这与你的
my_dict
示例相匹配,因为它包含:
-
字符串值 (
"value_1"
) -
嵌套字典,其中包含布尔值 (
True
) 和整数 (1200
) 值。
使用
Union
可以让你灵活地指定字典可以包含不同类型的多个值。