键入具有多种键值类型的 Dict [重复]

Posted

技术标签:

【中文标题】键入具有多种键值类型的 Dict [重复]【英文标题】:typing Dict with multiple key value types [duplicate] 【发布时间】:2020-12-21 06:36:42 【问题描述】:

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


   (int, int): string: string: int, string: float

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

Dict[Tuple[int, int], Dict[str, Dict[str, # what comes here]]

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

【问题讨论】:

据我所知,正确执行此操作的唯一方法是使用 TypedDict。你看过python.org/dev/peps/pep-0589吗? 固定键重复:Python 3 dictionary with known keys typing 【参考方案1】:

你应该可以使用Union:

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

from typing import Union

Dict[Tuple[int, int], Dict[str, Dict[str, Union[int, float]]]

话虽如此,如果键始终相同,最好使用tuplenamedtuple 代替内部dict

【讨论】:

这里的联合意味着所有字段都接受 int 和 float。如果区分哪些键接受 int 和哪些接受 float 很重要,那么这将过于笼统。尽管如此,OP 在他的问题中并没有做出这种区分 @Karl True。在这种情况下,您的 TypedDict 建议更有意义。 我会调查这个TypedDict认为字典的结构是固定的

以上是关于键入具有多种键值类型的 Dict [重复]的主要内容,如果未能解决你的问题,请参考以下文章

dict数据类型

python之dict

字典的基本操作与运用

基本数据类型

高级数据类型--字典(dict)

键入一组显式值类型的数组[重复]