Pythons Äquivalent zu PHPs Natsort für die Sortierung in natürlicher Reihenfolge
Eine häufig gestellte Frage in Python ist, wie man eine Liste in natürlicher Reihenfolge sortiert, ähnlich zur Natsort-Funktion von PHP. Im Gegensatz zu einer Standardsortierung betrachtet die natürliche Reihenfolge numerische Zeichen als Zahlen und nicht als Zeichenfolgen.
Erwägen Sie beispielsweise das Sortieren einer Liste von Dateinamen:
<code class="python">l = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg'] l.sort()</code>
Diese Standardsortierung führt zu:
['image1.jpg', 'image12.jpg', 'image15.jpg', 'image3.jpg']
Um jedoch eine natürliche Sortierung zu erreichen, stellt Python eine Schlüsselfunktion zur Verfügung, die Strings nach Möglichkeit in numerische Tupel umwandelt. Dies ermöglicht korrekte numerische Vergleiche.
Hier ist eine Beispielimplementierung:
<code class="python">import re def natsort_key(s): return map(int, re.findall(r'(\d+)', s))</code>
Die Anwendung dieses Schlüssels während der Sortierung ergibt die gewünschte natürliche Reihenfolge:
<code class="python">l.sort(key=natsort_key)</code>
Die Ausgabe wird sein:
['image1.jpg', 'image3.jpg', 'image12.jpg', 'image15.jpg']
Alternativ, wenn Sie eine Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung benötigen, kann eine vollständigere Implementierung verwendet werden:
<code class="python">def natcasecmp(a, b): return natcmp(a.lower(), b.lower())</code>
Dies bietet eine Sortierung in natürlicher Reihenfolge, bei der die Groß-/Kleinschreibung nicht berücksichtigt wird.
Das obige ist der detaillierte Inhalt vonWie erreicht man eine Sortierung in natürlicher Reihenfolge in Python wie PHPs Natsort?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!