如何表达Dict
具有两个不同类型值的两个键的类型?例如:
a = {'1': [], '2': {})
Run Code Online (Sandbox Code Playgroud)
以下只是为了让您了解我在寻找什么.
Dict [(str,List),(str,Set)]
ale*_*cxe 11
您要询问的功能称为"异构词典",您需要为特定键定义特定类型的值.这个问题目前正在讨论的类型与串钥匙异构词典和尚未实现,仍然是开放的.目前的想法是使用所谓TypedDict
的语法,如下所示:
class HeterogeneousDictionary(TypedDict):
x: List
y: Set
Run Code Online (Sandbox Code Playgroud)
请注意,mypy
项目已通过"mypy extensions"(标记为试验性)提供此类型 - TypedDict
:
from mypy_extensions import TypedDict
HeterogeneousDictionary = TypedDict('HeterogeneousDictionary', {'1': List, '2': Set})
Run Code Online (Sandbox Code Playgroud)
但至少,我们可以要求值为List
或Set
使用Union
:
from typing import Dict, List, Set, Union
def f(a: Dict[str, Union[List, Set]]):
pass
Run Code Online (Sandbox Code Playgroud)
当然,这并不理想,因为我们丢失了大量关于哪些键需要具有哪些类型值的信息.