El documentation no garantiza eso. ¿Hay algún otro lugar donde esté documentado?¿Se garantiza que la función sorted() de python sea estable?
Supongo que podría ser estable ya que el método de ordenación en las listas es guaranteed to be stable (Notas 9no punto: "Comenzando con Python 2.3, el método sort() se garantiza estable"), y ordenado es funcionalmente similar. Sin embargo, no puedo encontrar ninguna fuente definitiva que lo diga.
Propósito: Necesito ordenar en base a una clave principal y también a una secundaria en los casos donde la clave primaria es igual en ambos registros. Si está garantizado que sorted() es estable, puedo ordenar la clave secundaria, luego ordenar la clave principal y obtener el resultado que necesito.
PD: Para evitar cualquier confusión, estoy usando estable en el sentido de "un tipo es estable si garantiza que no se cambia el orden relativo de los elementos que se comparan iguales".
He encontrado que si estoy ordenando tuplas o listas, cada vez que las claves de clasificación "primarias" son iguales, termina ordenando por la tecla "secundaria". Por ejemplo, 'ordenado ([(1, 2), (1, 1)])' devuelve '[(1, 1), (1, 2)]' en lugar de devolver la entrada original en la misma secuencia/orden. ¿No debería la garantía de estabilidad significa que debería devolver la entrada original '[(1, 2), (1, 1)]'? En ese caso, debe ser explícito y decir 'clasificado ([(1, 2), (1, 1)], clave = lambda t: t [0])' – ray
¿No es esto lo que se espera en este caso? Python comparará las tuplas a través de todos los elementos de manera predeterminada, no solo la primera "primaria". Si solo desea ordenar el primer elemento, puede pasar el parámetro 'clave' explícitamente. –