Sortierung in python – wie man eine Liste mit alphanumerischen Werten sortiert?

Ich habe eine Liste, die aus Details wie folgt besteht:

list1 = ["1", "100A", "342B", "2C", "132", "36", "302F"] 

Nun möchte ich diese Liste sortieren, so dass die Werte in der folgenden Reihenfolge sind:

  • Flasche ererbte Klassen von Tabellen in mehreren identischen Datenbanken mit __bind_key__
  • Python one-liner if else-Anweisung
  • Numpy.mean auf unterschiedlicher Zeilengröße
  • Python HTML Entfernung
  • Python-Liste zum PostgreSQL-Array
  • Ranglisten in einer Liste von Begriffen
  •  list1 = ["1", "2C", "36", "100A", "132", "302F", "342B"] 

    Nur tun list1.sort() offensichtlich gibt nicht die richtige Antwort – es gibt:

     list1 = ["1", "100A", "132", "2C", "36", "302F", "342B"] 

    Ich nehme an, das ist, weil python alle diese als Strings direkt behandelt. Allerdings möchte ich sie nach ihrem numerischen Wert FIRST sortieren und dann das Zeichen, das der Nummer folgt.

    Wie gehe ich vor

    Ich danke dir sehr 🙂

  • Wie kann man eine bestimmte "Region" von Werten in einem 2D-Numpy-Array finden?
  • Wie zu debug ModelMultipleChoiceField
  • Python: Verwirrt mit list.remove
  • Python - getattr und Verkettung
  • Tkinter mac, minimieren Bildschirm
  • Google App Engine unterscheidet sich von seinem lokalen Anwendungsserver
  • 2 Solutions collect form web for “Sortierung in python – wie man eine Liste mit alphanumerischen Werten sortiert?”

    Sie wollen natürliche Art verwenden :

     import re _nsre = re.compile('([0-9]+)') def natural_sort_key(s): return [int(text) if text.isdigit() else text.lower() for text in re.split(_nsre, s)] 

    Beispiel:

     >>> list1 = ["1", "100A", "342B", "2C", "132", "36", "302F"] >>> list1.sort(key=natural_sort_key) >>> list1 ['1', '2C', '36', '100A', '132', '302F', '342B'] 

    Dies funktioniert durch Aufteilen der Elemente in Listen, die die Zahlen voneinander trennen und sie als Ganzzahlen anstelle von Strings vergleichen:

     >>> natural_sort_key("100A") ['', 100, 'a'] >>> natural_sort_key("342B") ['', 342, 'b'] 

    Beachten Sie, dass dies nur in Python3 funktioniert, wenn Sie immer Ints mit Ints und Strings mit Strings vergleichen, sonst erhalten Sie eine TypeError: unorderable types Ausnahme.

    Nun, Sie müssen einen Weg finden, um Ihre Strings zu Zahlen zuerst zu konvertieren. Beispielsweise

     import re def convert(str): return int("".join(re.findall("\d*", str))) 

    Und dann benutzt du es als sortschlüssel:

     list1.sort(key=convert) 
    Python ist die beste Programmiersprache der Welt.