Python如何对集合列表进行排序?

Python通过按顺序查看元组的元素来对元组列表进行排序。由于集合是无序的,Python如何对集合列表进行排序?

编辑:帖子中的问题和可接受的答案较为笼统,给出的文件也很深入。我的问题不是重复的。

回答:

无论列表中有什么内容,元素的__lt__方法都是唯一参考的比较方法。对于集合,a <

b意味着“a是”的适当子集,b不足以定义总顺序。这就是为什么结果通常是不确定的。可能是原始列表的任何排列,与实现恰好适用__lt__于哪些列表元素对一致。

如果对于列表中的每对集合,一个实际上是另一个的适当子集,则列表将从最小(基数)集合到最大集合进行排序。否则,无话可说。例如:

>>> sorted([{5, 6}, {3, 4}, {5}, {3}])  # nothing changes

[{5, 6}, {3, 4}, {5}, {3}]

发生的情况是未定义实现细节的结果。自从我撰写本文以来list.sort(),我知道在这种情况下会发生什么,但是不能保证总是这样工作:

首先,实现询问“是{3, 4} < {5, 6}”。否,因此前两个元素的顺序与已经排序一致。接下来询问“是{5} < {3,

4}?”。否,因此前三个元素似乎已经被排序。最后,它询问“是{3} <

{5}?”。再没有,因此原始列表的整个顺序与已经排序的顺序是一致的,并且没有任何变化。

将来的实现可能例如询问“是{5} < {5, 6}?”。在某个时候,并且由于“是”,所以决定{5}需要出现在之前{5,

6}。因此,结果根本没有定义。

以上是 Python如何对集合列表进行排序? 的全部内容, 来源链接: utcz.com/qa/418604.html

回到顶部