Рассмотрим этот простой пример
x = [1,2,3,4]
y = [1,2,2,4]
Приведенный ниже код возвращает кортеж, содержащий элементы из x и y, отсортированные по убыванию числа в списке y.
sorted(zip(x,y), key = lambda x: x[1], reverse = True)
Out[10]: [(4, 4), (2, 2), (3, 2), (1, 1)]
Мой вопрос: вы можете видеть, что кортежи (2,2) и (3,2) по существу связаны (одинаковое значение y = 2), но нужно выбрать, какой из них будет первым в отсортированном списке.
Каково правило по умолчанию для этого? Сохраняет ли Python элементы в исходном порядке по умолчанию?
Спасибо!






См. Стабильность сортировки и сложные сортировки в Sorting HOWTO:
Sorts are guaranteed to be stable. That means that when multiple records have the same key, their original order is preserved.
Да, из документы
The built-in
sorted()function is guaranteed to be stable. A sort is stable if it guarantees not to change the relative order of elements that compare equal — this is helpful for sorting in multiple passes (for example, sort by department, then by salary grade).
Ключевое слово для этого — стабильный, как указано в приведенной выше цитате: сортировка — это стабильный, если она сохраняет исходный порядок, когда в порядке сортировки есть связи, и сортировки Python гарантированно стабильны.