Для множеств, означает a < b
a
является подмножеством b
. Ни один из ваших двух наборов не является подмножеством другого, поэтому они считаются «одинаково большими», и поэтому вы всегда просто получили первый аргумент.
Демо множество сортировки:
>>> 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}
ни подмножество, ни надстройка любого из других, поэтому она считается столь же большой и так как это в самом начале, и функция сортировки является стабильной, он остается на своем месте. Остальные четыре, однако, сортируются красиво, потому что {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}
мы имеем объяснение, почему это так? Почему бы не отсортировать наборы по их длине? –
@JeanDupont «<», а точнее «⊂», это просто стандартное «сравнение» наборов. Если вы хотите сказать, что набор имеет меньшее количество элементов, скажем «| A | <| B |». Или в Python, len (A)