如何表达Dict
的类型,它有两个带有两种不同类型值的键?例如:
a = {'1': [], '2': {})
以下只是为了让您了解我在寻找什么。
Dict [(str,List),(str,Set)]
答案 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
要求值为List
或Set
:
from typing import Dict, List, Set, Union
def f(a: Dict[str, Union[List, Set]]):
pass
当然,这并不理想,因为我们丢失了很多关于哪些键需要具有哪些类型值的信息。