Heim >Backend-Entwicklung >Python-Tutorial >Wie sortiere ich Zeichenfolgen mit Zahlen auf natürliche Weise in Python?

Wie sortiere ich Zeichenfolgen mit Zahlen auf natürliche Weise in Python?

DDD
DDDOriginal
2024-11-30 01:46:10594Durchsuche

How to Sort Strings Containing Numbers Naturally in Python?

Sortieren von Zeichenfolgen mit eingebetteten Zahlen

Beim Umgang mit Zeichenfolgen, die Zahlen enthalten, führt die alphabetische Sortierung möglicherweise nicht zu den gewünschten Ergebnissen. Um solche Zeichenfolgen richtig zu sortieren, müssen Sie sowohl die Text- als auch die numerischen Komponenten berücksichtigen.

Menschliche Sortierung (natürliche Sortierung)

Natürliche Sortierung, auch als menschliche Sortierung bekannt, ist eine Technik, mit der Gegenstände so sortiert werden, dass sie der Wahrnehmung des Menschen entsprechen. Bei diesem Ansatz werden die Zahlen aus den Zeichenfolgen extrahiert und dann anhand ihrer numerischen Werte sortiert.

In Python können Sie die natürliche Sortierung mithilfe des folgenden benutzerdefinierten Sortierschlüssels implementieren:

def natural_keys(text):
    return [int(c) if c.isdigit() else c for c in re.split(r'(\d+)', text)]

This Die Funktion teilt die Zeichenfolge in Zeichen und Zahlen auf und wandelt die numerischen Zeichen dann in ganze Zahlen um. Die sortierte Liste wird durch Aufrufen der Funktion sort() mit diesem benutzerdefinierten Schlüssel erhalten:

alist = ["something1", "something12", "something17", "something2", "something25", "something29"]
alist.sort(key=natural_keys)
print(alist)

Die Ausgabe wäre:

['something1', 'something2', 'something12', 'something17', 'something25', 'something29']

Sorting Strings with Floats

Wenn Ihre Zeichenfolgen Gleitkommazahlen enthalten, können Sie den natürlichen Sortierschlüssel wie folgt ändern, um ihn zu extrahieren und in Gleitkommazahlen umzuwandeln Regex:

def natural_keys(text):
    return [float(c) if c.isdigit() else c for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text)]

Mit diesem modifizierten Schlüssel können Sie auch Zeichenfolgen mit Gleitkommazahlen sortieren:

alist = ["something1", "something2", "something1.0", "something1.25", "something1.105"]
alist.sort(key=natural_keys)
print(alist)

Die Ausgabe wäre:

['something1', 'something1.0', 'something1.105', 'something1.25', 'something2']

Durch den Einsatz menschlicher Sortiertechniken können Sie Zeichenfolgen mit eingebetteten Zahlen effizient und so sortieren, dass sie der menschlichen Intuition entsprechen.

Das obige ist der detaillierte Inhalt vonWie sortiere ich Zeichenfolgen mit Zahlen auf natürliche Weise in Python?. 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