Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erreicht man eine natürliche Sortierung in Python: Ein Analogon zur Natsort-Funktion von PHP?

Wie erreicht man eine natürliche Sortierung in Python: Ein Analogon zur Natsort-Funktion von PHP?

Linda Hamilton
Linda HamiltonOriginal
2024-11-06 01:59:02321Durchsuche

How to Achieve Natural Sorting in Python: An Analog to PHP's natsort Function?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn