寻找一组最大元素的错误 - python

有人可以向我解释为什么我得到这个结果吗?

>>> a = set([(0, 1), (1, 0), (0, 0)])    
>>> b = set([(1, 2), (2, 0), (0, 2), (2, 1), (1, 1)])    
>>> max(a,b)    
set([(0, 1), (1, 0), (0, 0)])
>>> max(b,a)
set([(1, 2), (2, 0), (0, 2), (2, 1), (1, 1)])

python大神给出的解决方案

对于集,a < b表示ab的子集。您的两个集合都不是另一个集合的子集,因此它们被认为“相等”,这就是为什么您总是只得到第一个参数的原因。

集排序演示:

>>> sorted([{5,6,7,8,9}, {1,2,3}, {1,2}, {1}, {1,2,3,4}])
[{8, 9, 5, 6, 7}, {1}, {1, 2}, {1, 2, 3}, {1, 2, 3, 4}]

在这里,{5,6,7,8,9}既不是其他子集的子集,也不是其任何子集的超集,因此它被认为是同样大的,并且由于它位于开头并且sort函数是稳定的,因此它保持在原处。但是,其他四个排序很好,因为{1}{1,2}的子集,依此类推。

但是,由于集合之间没有总排序,因此对它们进行排序在某种程度上是不可预测的。例如,这里{5,6,7,8,9}确实移到了另一个位置:

>>> sorted([{1,2,3}, {1,2}, {5,6,7,8,9}, {1}, {1,2,3,4}])
[{1}, {1, 2}, {1, 2, 3}, {8, 9, 5, 6, 7}, {1, 2, 3, 4}]

如果要以其他方式(例如按大小)对集合进行排序,则只需使用适当的key即可:

>>> sorted([{1,2,3}, {1,2}, {5,6,7,8,9}, {1}, {1,2,3,4}], key=len)
[{1}, {1, 2}, {1, 2, 3}, {1, 2, 3, 4}, {8, 9, 5, 6, 7}]

>>> max([{1,2,3}, {1,2}, {5,6,7,8,9}, {1}, {1,2,3,4}], key=len)
{8, 9, 5, 6, 7}