[PYTHON] Natürliche Sorte

Angenommen, es gibt eine Situation, in der die folgenden Variablen sortiert sind.

sample = ["a_12", "a_2", "a_0",  "a_10", "a_4"]

Zum Beispiel, wenn Sie die eingebaute Funktion "sortiert" verwenden

sorted(sample)

# ['a_0', 'a_10', 'a_12', 'a_2', 'a_4']

Das Ergebnis wird erhalten. Dies würde der menschlichen Intuition widersprechen.

Es fühlt sich natürlicher an, das Ergebnis "['a_0', 'a_2', 'a_4', 'a_10', 'a_12']" zu erhalten. Diese natürliche Sortierreihenfolge wird als natürliche Sortierreihenfolge bezeichnet, und die Sortiermethode wird auch als menschliche Sortierung bezeichnet.

Reproduzieren Sie diese Reihenfolge in Python.

Bei Verwendung der Bibliothek

Verwenden Sie natsort.

https://pypi.org/project/natsort/

$ pip install natsort
sample = ["a_12", "a_2", "a_0",  "a_10", "a_4"]
print(sample)
print(natsorted(sample, key=lambda y: y.lower()))

# ['a_12', 'a_2', 'a_0', 'a_10', 'a_4']
# ['a_0', 'a_2', 'a_4', 'a_10', 'a_12']

Wenn Sie eine Funktion selbst schreiben

Sie können den Schlüssel für die eingebaute Funktion "sortiert" angeben.

def natural_sort(l):
    def alphanum_key(s):
        return [int(c) if c.isdecimal() else c for c in re.split('([0-9]+)', s) ]
    return sorted(l, key=alphanum_key)

print(sample)
print(natural_sort(sample))

# ['a_12', 'a_2', 'a_0', 'a_10', 'a_4']
# ['a_0', 'a_2', 'a_4', 'a_10', 'a_12']

Recommended Posts

Natürliche Sorte
Sortieren
Sortierung einfügen
SelectionSort
[Python] Sortieren
Python #sort
Blasensorte
Blasensorte
AOJ Sort I-
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Natürlicher Zahlengenerator
Zusammenführungssortierung erklärt
Sortierimplementierung einfügen
Praktische Schlafsorte
Nach Pandas sortieren
Visualisieren Sie die Einfügesortierung