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.
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']
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