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