Natürliche String-Sortierung in Python
In Python führt das alphabetische Sortieren einer Liste von Strings mit der Standardfunktion sorted() möglicherweise nicht zum gewünschten Ergebnis „natürliche“ Ordnung. Dies liegt daran, dass sorted() Zeichenfolgen als einzelne Zeichen behandelt, was zu einer unnatürlichen Reihenfolge führt.
Betrachten Sie beispielsweise die folgende Liste von Zeichenfolgen:
['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
Sortieren dieser Liste mit sorted() ergibt Folgendes:
['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9']
Dies ist nicht die natürliche Sortierreihenfolge, da Zahlen nach Buchstaben alphabetisch sortiert und nicht als Teil der behandelt werden Zahl.
Um eine natürliche Zeichenfolgensortierung zu erreichen, können Sie die Natsort-Bibliothek verwenden. Natsort bietet Funktionen, die Zeichenfolgen intuitiver sortieren und dabei die natürliche Reihenfolge von Zahlen beibehalten.
Sie können Natsort mit pip installieren:
pip install natsort
Um eine natürliche Sortierung für das Gegebene durchzuführen Liste verwenden Sie die Funktion natsorted():
from natsort import natsorted x = ['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9'] natsorted(x, key=lambda y: y.lower())
Dadurch wird die gewünschte natürliche Sortierung erzeugt Reihenfolge:
['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
Die Funktion natsort_keygen() kann auch zum Erstellen eines Sortierschlüssels verwendet werden:
from natsort import natsort_keygen natsort_key = natsort_keygen(key=lambda y: y.lower()) list.sort(key=natsort_key)
Dadurch wird die Liste auf die gleiche Weise wie natsorted() sortiert.
Zusätzlich zu natsorted() und natsort_keygen() bietet natsort auch os_sorted() und os_sort_keygen() Funktionen. Mit diesen Funktionen können Sie Listen nach dem Sortierverhalten des Datei-Explorers Ihres Betriebssystems sortieren, das vom Standardverhalten von natsort abweichen kann.
Das obige ist der detaillierte Inhalt vonWie kann ich eine natürliche String-Sortierung in Python erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!