如何在类型注释中描述递归或任意深度的树状结构?

时间:2018-01-25 15:27:06

标签: python recursion tree typing

如何在类型注释中描述树状数据结构或包含递归的数据结构?以下可能解释我的意思,但无效:

Dict[Symbol, Tuple[ndarray, Dict[Symbol, Tuple[ndarray, Dict[Symbol, Tuple[...]]]]]]

因为TypeError: Tuple[t0, t1, ...]: each t must be a type. Got Ellipsis.,这是公平的。一种方法是省略内部元组的内容:

Dict[Symbol, Tuple[ndarray, Dict[Symbol, Tuple]]]

Dict[Symbol, Tuple[ndarray, Dict[Symbol, Tuple[ndarray, Dict[Symbol, Tuple]]]]]

Dict[Symbol, Tuple[ndarray, Dict[Symbol, Tuple[ndarray, Dict[Symbol, Tuple[ndarray, Dict[Symbol, Tuple]]]]]]] 

但是这些替代方案严格指定树中的级别数,而实际上不应指定此深度。字典可以具有任意长度(包括长度0,这使得深度有限)。

如何使用Python输入模块描述任意深度但规定形式的树?我是否需要定义自己的泛型类型,还是可以通过组合现有的泛型类型来实现?

(符号为sympy.core.symbol.Symbol,ndarray为numpy.ndarray

0 个答案:

没有答案