Il documentation non garantisce che. C'è qualche altro posto che è documentato?La funzione sorted() di python è garantita per essere stabile?
Immagino che potrebbe essere stabile poiché il metodo di ordinamento sugli elenchi è guaranteed to be stable (Punto 9 Note: "A partire da Python 2.3, il metodo sort() è stabile") e ordinato è funzionalmente simile. Tuttavia, non sono in grado di trovare alcuna fonte definitiva che lo dica.
Scopo: Ho bisogno di ordinare in base a una chiave primaria e anche una chiave secondaria nei casi in cui la chiave primaria è uguale in entrambi i record. Se sort() è garantito stabile, posso ordinare sulla chiave secondaria, quindi ordinare sulla chiave primaria e ottenere il risultato che mi serve.
PS: Per evitare qualsiasi confusione, sto usando stabile nel senso di "un ordinamento è stabile se garantisce di non modificare l'ordine relativo di elementi che si confrontano uguali".
Ho scoperto che se sto ordinando le tuple o le liste, ogni volta che le chiavi di ordinamento "primarie" sono uguali, finisce con l'ordinamento per il tasto "secondario". Ad esempio, 'sorted ([(1, 2), (1, 1)])' restituisce '[(1, 1), (1, 2)]' invece di restituire l'input originale nella stessa sequenza/ordine. Non dovrebbe la garanzia di stabilità significa che dovrebbe restituire l'input originale '[(1, 2), (1, 1)]'? In tal caso, devi essere esplicito e dire 'sort ([(1, 2), (1, 1)], key = lambda t: t [0])' – ray
Non è questo che ci si aspetta in questo caso? Python confronterà le tuple attraverso tutti gli elementi per impostazione predefinita, non solo la prima "primaria". Se vuoi solo ordinare sul primo elemento, puoi passare esplicitamente il parametro 'key'. –