Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 排序集(不是单个集)_Python_Python 2.7_Data Structures_Set - Fatal编程技术网

Python 排序集(不是单个集)

Python 排序集(不是单个集),python,python-2.7,data-structures,set,Python,Python 2.7,Data Structures,Set,我有许多集合,每个集合代表单个数据文件中的唯一项。这些集合中有些是其他集合的子集,有些是相同的 是否有一个原语或模块可以让我对集合进行排序,从而得到类似的结果 A <= B <= C <= D <= E A只需将它们放在一个列表中并排序即可。如果一个集合是另一个集合的子集,那么它们的>a={1,2} >>>B=A{3} >>>C=B.复制() >>>D=C{4} >>>A>>[B,C,D,A] [集合([1,2,3]),集合([1,2,3]),集合([1,2,3,4])

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

是否有一个原语或模块可以让我对集合进行排序,从而得到类似的结果

A <= B <= C <= D <= E

A只需将它们放在一个列表中并排序即可。如果一个集合是另一个集合的子集,那么它们的
>a={1,2}
>>>B=A{3}
>>>C=B.复制()
>>>D=C{4}
>>>A>>[B,C,D,A]
[集合([1,2,3]),集合([1,2,3]),集合([1,2,3,4]),集合([1,2])]
>>>已排序([B、C、D、A])
[集合([1,2]),集合([1,2,3]),集合([1,2,3]),集合([1,2,3,4])]

明确地说:对于所有排序操作,不属于另一个集合的两个集合返回False,并且它们在排序时的相对顺序不会改变。这意味着序列中不相交的集合将给工作带来麻烦,因为它们违反了总排序的预期

啊哈,我不知道这是可能的。谢谢我不确定这种排序的结果是否非常有用,因为顺序没有很好地定义(排序操作不会失败,但顺序有些随意)。这是因为许多排序(包括Python的timsort)都假定它们的值是完全有序的。对于
set
s,这是不正确的,在这里你可以有
a
,但是你不能得出
a
。尝试
a,b,c={1},{1,2},{3}
,然后
排序([b,c,a])
b
将出现在
a
之前的输出中@Blckknght我在回答中明确说明了这一限制。@Blckknght使其更加明确。啊,我可能误读了问题对集合的描述。如果列表中没有不相交的集合,
sorted
确实可以正常工作。
>>> 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])]