Документация не гарантирует это. Есть ли какое-либо другое место, что оно документируется?
Я предполагаю, что это могло бы быть стабильно, так как метод сортировки для списков, как гарантируют, будет стабилен (Примечания 9-я точка: "Начиная с Python 2.3, вид () метод, как гарантируют, будет стабилен"), и отсортированный функционально подобно. Однако я не в состоянии найти любой категорический источник, который говорит так.
Цель: Я должен отсортировать на основе первичного ключа и также вторичного ключа в случаях, где первичный ключ равен по обеим записям. Если отсортировано (), как гарантируют, будет стабилен, я могу отсортировать на вторичном ключе, то вид на первичном ключе и получает результат, в котором я нуждаюсь.
PS: Для предотвращения любого беспорядка я использую стабильный в смысле "вида, стабильно, если он гарантирует, что не изменил относительный порядок элементов, которые выдерживают сравнение равный".
Да, цель руководства действительно состоит в том, чтобы гарантировать, что sorted
является стабильным и действительно использует тот же алгоритм, что и метод sort
. Я действительно понимаю, что в документации не на 100% ясна эта личность; Заплаты документации всегда с радостью принимаются!
В документах "Что нового" для Python 2.4 фактически говорится о том, что sorted () сначала создает список, а затем вызывает для него sort (), предоставляя вам гарантия вам нужна, правда, не в "официальных" документах. Вы также можете просто проверить источник, если вас действительно беспокоит.
Они стабильны.
Кстати: иногда можно игнорировать, зная, стабильны ли сортировка и сортировка, комбинируя многопроходную сортировку в однопроходную.
Например, если вы хотите сортировать объекты по их last_name
, first_name
атрибутам, вы можете сделать это за один проход:
sorted_list= sorted(
your_sequence_of_items,
key= lambda item: (item.last_name, item.first_name))
воспользовавшись сравнением кортежей.
Этот ответ, как есть, охватывает исходный вопрос. Для дальнейших вопросов сортировки существует Python Sorting How-To.
.