【问题标题】:Indicating multiple value in a Dict[] for type hints在 Dict[] 中指示类型提示的多个值
【发布时间】:2019-03-19 12:11:06
【问题描述】:

我如何表达Dict 的类型,它有两个键,可以采用两种不同类型的值?例如:

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

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

字典[(str, List), (str, Set)]

【问题讨论】:

  • 这在 [大多数] 静态类型语言中也不支持。考虑一个联合(例如“记录”或“元组”)来分解类型。

标签: python dictionary


【解决方案1】:

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

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

请注意,mypy project 已通过“mypy 扩展”(标记为实验性)提供此类型 - 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

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

【讨论】:

  • TypedDict 在 Python 3.8 中添加。答案应该更新。
猜你喜欢
  • 2016-08-17
  • 2022-09-30
  • 2021-06-15
  • 2020-01-17
  • 2022-07-28
  • 2022-01-24
  • 2016-02-29
  • 2018-12-12
  • 2014-09-11
相关资源
最近更新 更多