Хотя вы можете определить функцию сравнения для сортировки, обычно рекомендуется использовать ключевую функцию. Для вашего приложения эта ключевая функция должна возвращать то же значение для всего, что следует оставить нетронутым, и ключ сортировки для всего остального. Пример
def my_key(a):
if a.part_of_subset:
return 0,
return 1, a.sort_key
collection.sort(key=my_key)
Обратите внимание, что отсортированное подмножество будет сгруппировано в один блок после уже отсортированных элементов.
Отредактировано : Чтобы избавиться от ограничения, что sort_key
никогда не может быть None
, и чтобы заставить код работать в Python 3, я обновил функцию ключа. Старая версия также могла привести к странным результатам в случае, когда ключи сортировки бывают разных типов (что не кажется слишком полезным, но в любом случае).