一种专用数据结构,支持高效的联接操作,并具有定义好的遍历顺序。通常用于从规则和方面中的传递依赖项累积数据。如需了解详情,请点击此处。
依赖项集的元素必须可哈希化且都属于同一类型(由内置的 type(x) 函数定义),但依赖项集并非简单的哈希集,也不支持快速成员资格测试。如果您需要常规的集数据类型,可以使用一个字典来模拟它,其中所有键都映射到 True
。
Depset 不可更改。应使用构造函数来创建这些集合,并通过 transitive
参数与其他废弃集合并或扩充。
order
参数决定了用于将 depset 转换为可迭代对象的遍历类型。有以下四种可能的值:
"default"
(以前称为"stable"
):顺序未指定(但具有确定性)。"postorder"
(以前称为"compile"
):从左到右排序。确切地说,这将以递归方式遍历所有子项(从左到右),然后直接元素(从左到前)。"preorder"
(以前称为"naive_link"
):从左到右的预排序。具体而言,此方法会先从左到右遍历直接元素,然后递归地从左到右遍历子元素。"topological"
(以前称为"link"
):从根到叶的拓扑排序。从左到右并无保证。
只有当两个预设集具有相同的顺序或其中一个具有 "default"
顺序时,才能合并这两个预设集。在后一种情况下,生成的存储桶的顺序将与另一个存储桶的顺序相同。
Depset 可能包含重复值,但在迭代(使用 to_list()
)时,这些值会被抑制。重复项可能会干扰排序语义。
成员
to_list
list depset.to_list()按 depset 的遍历顺序返回没有重复项的元素列表。请注意,对于多次添加到设置中的元素,顺序未指定(但具有确定性)。对于采用
"default"
顺序的 depset,以及子 depset 中与父 depset 顺序不同的元素,顺序也是未指定的。该列表只是一个副本;修改日期对设置没有影响,反之亦然。