Eine nützliche Methode, die Python dir zur Verfügung stellt, ist das Sortieren von Listen mit der sort()-Methode. Und genau um diese soll es in diesem Beitrag gehen. Ich zeige dir zuerst, wie sie funktioniert und dann noch ein paar Beispiele, wie du Listen auf- und absteigend sortieren kannst. Und sogar, wie du eigene Schlüssel zum Sortieren der Listen definierst.
sort()-Methode in Python
Die sort()-Methode wendest du auf Objekte der Klasse „Liste“ in Python an, um deren Werte zu sortieren.
Oder einfacher gesagt, um etwas umgangssprachlicher zu sein, sort() ist eine Funktion, die Listen sortiert. Punkt.
Beispiel 1 – Liste mit Zahlen sortieren
Hier siehst du eine Liste mit drei Einträgen. Nun verwenden wir sort(), um die Liste zu sortieren.
liste = [3, 6, 1]
liste.sort()
print(liste)
Das Ergebnis ist:
[1, 3, 6]
Wie vermutet, die Liste wurde sortiert, und zwar aufsteigend. Auf Englisch heißt das „ascending“.
Beispiel 2 – Liste mit strings sortieren
Mit ganzen Zahlen, wie im vorherigen Beispiel ist das natürlich einfach, aber die Liste kann auch andere Datentypen beinhalten.
liste = ["ac", "aa", "ab"]
liste.sort()
print(liste)
Lässt du den Code durchlaufen, erhältst du:
['aa', 'ab', 'ac']
Das ist nicht verwunderlich, man muss dafür aber wissen, wie Zeichenketten, also strings, und andere Datentypen in Python miteinander verglichen werden. Dazu habe ich hier einen Beitrag verfasst.
Beispiel 3 – Liste mit unterschiedlichen Datentypen kann nicht sortiert werden, mit sort()-Methode
Wichtig ist, dass alle Einträge in deiner Liste vom gleichen Datentyp sind (Ausnahme: int und float), damit du sie vergleichen kannst.
Schau dir diesen Code an. Eine Liste mit vier Einträgen, alle von einem anderen Datentyp. Wir haben eine ganze Zahl (integer), eine Zeichenkette (string), eine Liste (list) und ein Schlüssel-Werte-Paar (dictionary).
liste = [1, "abc", [2,1], {"key": 4}]
liste.sort()
print(liste)
Und tatsächlich erhalten wir eine Fehlermeldung:
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) Input In [24], in <module> 1 liste = [1, "abc", [2,1], {"key": 4}] ----> 2 liste.sort() 3 print(liste) TypeError: '<' not supported between instances of 'str' and 'int'
Wenn du willst, kannst du es mit allen möglichen Datentypen ausprobieren, eine Liste wird genau dann mit der sort()-Methode sortierbar sein, wenn sie nur Einträge vom gleichen Datentyp enthält.
Außer, es sind ganze Zahlen und Kommazahlen, die muss man von der Logik in dem Fall natürlich gleichsetzen. Python weiß sehr wohl, dass 2.5 größer ist als 2.
Absteigende Sortierung einer Liste mit „Reverse“
Wie wir bereits gesehen haben, wird die sort()-Methode alle Listen automatisch aufsteigend sortieren.
Möchtest du die Werte deiner Liste absteigend, auf Englisch „descending“ sortieren, so gehst du folgendermaßen vor.
liste = [3, 6, 1]
liste.sort(reverse = True)
print(liste)
Schreibe in die Klammer den Befehl ‚reverse = True‘ und Python wird deine Liste absteigend sortieren. Schauen wir uns das Ergebnis des vorherigen Codes an:
[6, 3, 1]
Du kannst natürlich auch ‚reverse = False‘ eingeben, das ist aber sowieso die Grundeinstellung der sort()-Methode und wird das gleiche Ergebnis liefern, wie wenn du nichts in die Klammer schreibst.
Listen sortieren mit definiertem Schlüssel ‚key = ‚
Wie in der Einleitung angekündigt, kannst du auch selbst entscheiden, nach welchem Kriterium Python deine Liste sortieren soll.
Normalerweise wird Python einfach die Werte der einzelnen Einträge vergleichen und danach sortieren.
Aber du könntest zum Beispiel auch nach der Länge einzelner Einträge sortieren, insofern diese Objekte sind, für die die len()-Funktion Sinn ergibt.
Beispiel 4 – Liste sortieren nach Länge der Einträge
Ich habe hier eine Liste gewählt, der Einträge verschieden Wörter enthalten. Nun möchte ich diese nach der Länge der Einträge sortieren.
So sieht mein Code aus:
liste = ["aca", "aa", "aaab"]
liste.sort(key = len)
print(liste)
Und das Ergebnis ist:
['aa', 'aca', 'aaab']
Wichtig: Die Funktion len() gibt die Länge eines Objekts zurück. Um nach dieser zu sortieren, musst du in der Klammer der sort()-Methode ‚key = len‘ schreiben. Also nach dem Stichwort ‚key = schreibt man die Funktion nach der sortiert werden soll OHNE Klammern.
Natürlich kannst du dir auch eigene Funktionen definieren, nach denen etwas sortiert werden soll und deren Namen dann nach ‚key =‘ schreiben.
Dieses Konzept ist schon etwas fortgeschrittener und es ist verständlich, wenn die Anfänger*innen unter euch mit ‚key =‘ nicht sofort warm werden.
Ich hoffe, ich konnte dir die sort()-Methode für Listen in Python etwas näher bringen. Lass mir ein Kommentar da, falls du Fragen hast oder Grüße da lassen willst.
Falls du noch mehr Python-Aufgaben lösen willst, dann habe ich meinen monatlichen Newsletter für dich!