输入具有多个键值类型的 Dit

Luc*_*uca 2 python typing type-hinting python-3.x

我有一个 python 函数,它返回具有以下结构的字典

{
   (int, int): {string: {string: int, string: float}}
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何使用类型提示来指定它。所以,这些位很清楚:

Dict[Tuple[int, int], Dict[str, Dict[str, # what comes here]]
Run Code Online (Sandbox Code Playgroud)

但是,内部字典具有两个键的int和值类型。float我不知道如何注释

Sel*_*cuk 6

您应该能够使用Union

联合型;Union[X, Y]表示 X 或 Y。

from typing import Union

Dict[Tuple[int, int], Dict[str, Dict[str, Union[int, float]]]
Run Code Online (Sandbox Code Playgroud)

话虽这么说,如果密钥始终相同,那么使用 atuple或 anamedtuple代替内部可能是更好的主意。dict

  • 这里的 Union 意味着所有字段都接受 int 和 float。如果区分哪些键接受 int 和哪些键接受 float 很重要,那么这就太笼统了。不过,OP 在他的问题中没有做出这种区分 (2认同)
  • @卡尔·特鲁。在这种情况下,您的“TypedDict”建议更有意义。 (2认同)