Die documentation übernimmt keine Garantie dafür. Gibt es einen anderen Ort, an dem es dokumentiert ist?Ist pythons sortierte() Funktion garantiert stabil?
Ich denke, es könnte stabil sein, da die Sortiermethode auf Listen guaranteed to be stable ist (Hinweise 9. Punkt: "beginnend mit Python 2.3 ist die sort() -Methode garantiert stabil"), und sortiert ist funktionell ähnlich. Ich finde jedoch keine definitive Quelle, die das sagt.
Zweck: Ich muss auf Basis eines Primärschlüssels und auch eines Sekundärschlüssels in Fällen sortieren, in denen der Primärschlüssel in beiden Datensätzen gleich ist. Wenn sorted() garantiert stabil ist, kann ich nach dem Sekundärschlüssel sortieren, dann nach dem Primärschlüssel sortieren und das Ergebnis erhalten, das ich brauche.
PS: Um jede Verwirrung zu vermeiden, verwende ich stabil im Sinne von "eine Sorte ist stabil, wenn es garantiert, die relative Reihenfolge der Elemente nicht zu ändern, die gleich vergleichen".
Ich habe festgestellt, dass, wenn ich Tupel oder Listen sortiere, wenn die "primären" Sortierschlüssel gleich sind, es am Ende sortiert nach dem "sekundären" Schlüssel. Zum Beispiel gibt 'sorted ([(1, 2), (1, 1)]) 'zurück' [(1, 1), (1, 2)]', anstatt die ursprüngliche Eingabe in der gleichen Reihenfolge/Reihenfolge zurückzugeben. Sollte die Garantie der Stabilität nicht bedeuten, dass sie den ursprünglichen "[(1, 2), (1, 1)]" Input zurückgibt? In diesem Fall müssen Sie explizit sein und sagen 'sortierte ([(1, 2), (1, 1)], Schlüssel = Lambda t: t [0])' – ray
Ist das nicht, was in diesem Fall erwartet wird? Python wird Tupel standardmäßig mit allen Elementen vergleichen, nicht nur mit dem ersten "primären". Wenn Sie nur nach dem ersten Element sortieren möchten, können Sie den Parameter 'key' explizit übergeben. –