Natürliche Sortierung in Python: Ein Analogon zur Natsort-Funktion von PHP
Zum Sortieren einer Liste von Zeichenfolgen in „natürlicher Reihenfolge“, wobei numerische Präfixe verwendet werden als ganze Zahlen interpretiert werden, muss ein spezieller Algorithmus verwendet werden. PHP verfügt über die Natsort-Funktion, die diesem Bedarf gerecht wird und sortierte Ergebnisse analog zur menschlichen Wahrnehmung liefert.
In Python kann eine ähnliche Funktionalität mit den folgenden Ansätzen erreicht werden:
Verwendung des Natürlichen Schlüsselfunktion:
Diese Funktion führt die erforderlichen Konvertierungen in Schlüssel durch, die den natürlichen Sortierprozess steuern. Es wandelt numerische Präfixe in ganze Zahlen um und behandelt nicht numerische Zeichen als Zeichenfolgen.
<code class="python">import re def natural_key(string_): return [int(s) if s.isdigit() else s for s in re.split(r'(\d+)', string_)]</code>
Beispielverwendung:
<code class="python">L = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg'] sorted(L, key=natural_key) # ['image1.jpg', 'image3.jpg', 'image12.jpg', 'image15.jpg']</code>
Durch die Verwendung der Funktion natural_key als Schlüssel in der Sortierfunktion von Python wird die Die Liste ist so sortiert, dass sie der natürlichen Reihenfolge entspricht und numerische Präfixe in aufsteigender numerischer Reihenfolge platziert.
Alternativer Ansatz mit natcmp und natcasecmp:
Diese alternative Methode nutzt den Benutzer -definierte Funktionen zum Erreichen einer natürlichen Sortierung:
<code class="python">def try_int(s): try: return int(s) except: return s def natsort_key(s): import re return map(try_int, re.findall(r'(\d+|\D+)', s)) def natcmp(a, b): return cmp(natsort_key(a), natsort_key(b)) def natcasecmp(a, b): return natcmp(a.lower(), b.lower())</code>
Beispielverwendung:
<code class="python">L.sort(natcasecmp)</code>
Dieses Codefragment ändert effektiv die Sortiermethode der Liste L, um die Funktion natcasecmp zum Sortieren zu verwenden führt natürliche Zeichenfolgenvergleiche ohne Berücksichtigung der Groß- und Kleinschreibung durch.
Durch die Implementierung eines dieser Ansätze können Entwickler eine natürliche Sortierung in Python erreichen und so der Notwendigkeit gerecht werden, Listen auf eine Weise zu sortieren, die die menschliche Wahrnehmung nachahmt, insbesondere beim Umgang mit Zeichenfolgen, die enthalten sowohl numerische als auch nicht numerische Zeichen.
Das obige ist der detaillierte Inhalt vonWie erreicht man eine natürliche Sortierung in Python: Ein Analogon zur Natsort-Funktion von PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!