在Dict []中指示类型提示的多个值

时间:2018-01-02 01:05:44

标签: python dictionary

如何表达Dict的类型,它有两个带有两种不同类型值的键?例如:

a = {'1': [], '2': {})

以下只是为了让您了解我在寻找什么。

  

Dict [(str,List),(str,Set)]

1 个答案:

答案 0 :(得分:10)

您要问的功能称为“异构词典”,您需要为特定键定义特定类型的值。该问题正在Type for heterogeneous dictionaries with string keys进行讨论,尚未实施且仍处于打开状态。目前的想法是使用所谓的TypedDict,它允许使用如下语法:

class HeterogeneousDictionary(TypedDict):
    x: List
    y: Set

请注意,mypy project此类型已通过“mypy extensions”(标记为试验性)提供 - TypedDict

from mypy_extensions import TypedDict

HeterogeneousDictionary = TypedDict('HeterogeneousDictionary', {'1': List, '2': Set})

但至少,我们可以使用Union要求值为ListSet

from typing import Dict, List, Set, Union

def f(a: Dict[str, Union[List, Set]]):
    pass

当然,这并不理想,因为我们丢失了很多关于哪些键需要具有哪些类型值的信息。