Wie sortiert man eine Liste von Zeichenketten?
Wie kann man in Python am besten eine alphabetisch sortierte Liste erstellen?
395
3
Wie kann man in Python am besten eine alphabetisch sortierte Liste erstellen?
Einfache Antwort:
Dies verändert Ihre ursprüngliche Liste (d.h. sortiert an Ort und Stelle). Um eine sortierte Kopie der Liste zu erhalten, ohne das Original zu verändern, verwenden Sie die Funktion
sorted()
:Die obigen Beispiele sind jedoch etwas naiv, da sie die Gebietsschema nicht berücksichtigen und eine Sortierung unter Berücksichtigung der Groß- und Kleinschreibung vornehmen. Sie können den optionalen Parameter
key
nutzen, um eine eigene Sortierreihenfolge festzulegen (die Alternative,cmp
zu verwenden, ist eine veraltete Lösung, da sie mehrfach ausgewertet werden muss -key
wird nur einmal pro Element berechnet).Also, um nach dem aktuellen Gebietsschema zu sortieren, wobei sprachspezifische Regeln berücksichtigt werden (
cmp_to_key
ist eine Hilfsfunktion von functools):Und schließlich können Sie bei Bedarf ein eigenes Gebietsschema für die Sortierung angeben:
Letzter Hinweis: Sie werden Beispiele für die Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung sehen, die die Methode
lower()
verwenden - diese sind falsch, weil sie nur für die ASCII-Untermenge von Zeichen funktionieren. Diese beiden sind für alle nicht-englischen Daten falsch:Es ist wirklich so einfach :)
Aber wie werden dabei sprachspezifische Sortierregeln behandelt? Berücksichtigt es das Gebietsschema?
Nein,
list.sort()
ist eine generische Sortierfunktion. Wenn du nach den Unicode-Regeln sortieren willst, musst du eine eigene Sortierfunktion definieren. Du kannst versuchen, das pyuca Modul zu benutzen, aber ich weiß nicht, wie vollständig es ist.