排序集(不是一组)

时间:2014-10-09 21:42:49

标签: python python-2.7 data-structures set

我有多个集合,每个集合代表单个数据文件中的唯一项目。其中一些是其他集的子集,有些是相同的。

是否有原语或模块可以让我对集合进行排序,以便得到类似

的内容
A <= B <= C <= D <= E
对于集合A,B,C,D,E,F?

,等等

即。排序来自集合中的项目,而是根据它们之间的关系将集合本身​​排序为彼此的子集和超集?

1 个答案:

答案 0 :(得分:8)

将它们放入列表并对其进行排序。如果一个集合是另一个集合的子集,则它们的<=关系为True,这将扩展到排序。换句话说,您想要的是默认排序顺序

演示:

>>> A = {1, 2}
>>> B = A | {3}
>>> C = B.copy()
>>> D = C | {4}
>>> A <= D
True
>>> [B, C, D, A]
[set([1, 2, 3]), set([1, 2, 3]), set([1, 2, 3, 4]), set([1, 2])]
>>> sorted([B, C, D, A])
[set([1, 2]), set([1, 2, 3]), set([1, 2, 3]), set([1, 2, 3, 4])]

要明确:对于所有排序操作,两个不是另一个的子集的集合返回False,并且在排序时它们的 relative 顺序不会更改。这意味着序列中的不相交集会在工作中抛出一个扳手,因为它们违反了总排序排序的期望。