Heim >Backend-Entwicklung >Python-Tutorial >Wie sortiere ich Zeichenfolgen mit Zahlen richtig?

Wie sortiere ich Zeichenfolgen mit Zahlen richtig?

DDD
DDDOriginal
2024-12-03 14:49:10312Durchsuche

How to Sort Strings Containing Numbers Correctly?

So sortieren Sie Zeichenfolgen mit Zahlen richtig

Das Sortieren von Zeichenfolgen, die Zahlen enthalten, kann eine Herausforderung sein. Die Standardmethode sort() behandelt jedes Zeichen als eigene Entität, was zu einer falschen Reihenfolge führt. Um solche Zeichenfolgen korrekt zu sortieren, ist ein ausgefeilterer Ansatz erforderlich.

Eine effektive Methode ist die menschliche Sortierung, bei der reguläre Ausdrücke verwendet werden, um die numerischen Komponenten aus den Zeichenfolgen zu extrahieren. Mit dieser Technik können die Zahlen unabhängig von den alphabetischen Teilen sortiert werden.

Um die menschliche Sortierung zu implementieren, befolgen Sie diese Schritte:

  1. Importieren Sie das re-Modul.
  2. Definieren Sie eine Funktion atoi(text), um eine Zeichenfolge in eine Ganzzahl umzuwandeln, oder belassen Sie sie als Zeichenfolge, wenn es sich nicht um eine Zahl handelt.
  3. Definieren Sie eine Funktion natural_keys(text), um die Zeichenfolge mithilfe des regulären Ausdrucks (d) aufzuteilen.
  4. Sortieren Sie die Liste mithilfe des Schlüsselparameters von sort() und übergeben Sie natural_keys Funktion.

Beispiel:

import re

def atoi(text):
    return int(text) if text.isdigit() else text

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

alist = [
    "something1",
    "something12",
    "something17",
    "something2",
    "something25",
    "something29"]

alist.sort(key=natural_keys)
print(alist)

Ausgabe:

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

Dieser Ansatz sortiert die genau Zeichenfolgen unter Berücksichtigung sowohl der alphabetischen als auch der numerischen Teile.

Das obige ist der detaillierte Inhalt vonWie sortiere ich Zeichenfolgen mit Zahlen richtig?. 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