我想输入提示 some_func 函数的返回对象,它始终是相同的格式。这是正确的吗?
from typing import List, Dict
def some_func() -> List[Dict[str, int, str, List[CustomObject]]]:
my_list = [
{"ID": 1, "cargo": [CustomObject(), CustomObject()]},
{"ID": 2, "cargo": [CustomObject(), CustomObject()]},
{"ID": 2, "cargo": [CustomObject(), CustomObject()]}
]
return my_list
正确键入提示的一种方法如下所示:
from typing import List, Dict, Union
def some_func() -> List[Dict[str, Union[int, List[CustomObject]]]]:
my_list = [
{"ID": 1, "cargo": [CustomObject(), CustomObject()]},
{"ID": 2, "cargo": [CustomObject(), CustomObject()]},
{"ID": 2, "cargo": [CustomObject(), CustomObject()]}
]
return my_list
简单解释一下,当对字典进行类型注释时,只能有两个参数,第一个是任何给定键的类型,第二个是任何给定值的类型。 由于键始终是字符串,因此我们保留
Dict[str,
并且我们的键可以是整数,也可以是 CustomObject 类型,以表示我们使用 Union
的类型注释中的不同可能性,因此最终我们得到:
Dict[str, Union[int, List[CustomObject]]
一些额外的说明,在 python 3.9 或更高版本中,您可以用内置的
Dict
替换从打字导入的 dict
,在 python 3.10 或更高版本中,联合可以表示为 type | type
,并且您可以替换 List
内置 list
为了获得更清晰的结果,您可能需要使用 typedDict,总体结果将是:
from typing import TypedDict
class customDict(TypedDict):
ID: int
cargo: list[CustomObject]
def some_func() -> list[customDict]:
my_list = [
{"ID": 1, "cargo": [CustomObject(), CustomObject()]},
{"ID": 2, "cargo": [CustomObject(), CustomObject()]},
{"ID": 2, "cargo": [CustomObject(), CustomObject()]}
]
return my_list
类型化字典的每个属性代表 my_list 中字典的一个键,下面代表与该键相关的值的类型