Eine Liste in Python sortieren

Für das Sortieren von Elementen einer Liste steht die Built-in-Methode list.sort() zur Verfügung. Dabei wird keine neue Liste erzeugt, sondern es werden die Elemente in der Liste sortiert.

>>> my_list = [7, 9, 8, 1, 4, 3, 6]
>>> my_list.sort()
>>> my_list
[1, 3, 4, 6, 7, 8, 9]

Des Weiteren gibt es die Built-in-Funktion sorted(). Im Gegensatz zur Methode list.sort() wird hierbei eine neue Liste erzeugt. Die Funktion sorted() kann außerdem nicht nur auf Listen, sondern auch auf andere iterierbare Objekte angewendet werden.

>>> my_list = [7, 9, 8, 1, 4, 3, 6]
>>> my_sorted_list = sorted(my_list)
>>> my_sorted_list
[1, 3, 4, 6, 7, 8, 9]

Es können Parameter verwendet werden. So wird mit. reverse=True die Liste absteigend sortiert:

>>> my_list = [7, 9, 8, 1, 4, 3, 6]
>>> my_list.sort(reverse=True)
>>> my_list
[9, 8, 7, 6, 4, 3, 1]

Dies funktioniert auch mit sorted():

>>> my_list = [7, 9, 8, 1, 4, 3, 6]
>>> my_sorted_list = sorted(my_list, reverse=True)
>>> my_sorted_list
[9, 8, 7, 6, 4, 3, 1]

Der key-Parameter kann dazu verwendet werden, eine Sortierung von komplexeren Objekten durchzuführen, wie nachfolgendes Beispiel anhand der Klasse Employee zeigt. Ziel ist es ein Sortierung anhand des Alters durchzuführen:

#!/usr/bin/env python3

from operator import attrgetter


class Employee:
    def __init__(self, name: str, age: int) -> None:
        self.name = name
        self.age = age

    def __repr__(self) -> str:
        return repr((self.name, self.age))


employee1 = Employee("Jenny", 56)
employee2 = Employee("Kendra", 43)
employee3 = Employee("Tim", 55)

employee_list = [employee1, employee2, employee3]

sorted_employee_list = sorted(employee_list, key=attrgetter("age"))

for i in sorted_employee_list:
    print(i)

Als Ergebnis erhält man eine eine Liste mit den nach dem Alter sortierten Arbeitnehmern:

('Kendra', 43)
('Tim', 55)
('Jenny', 56)

Mit reverse=True wäre wieder eine absteigende Sortierung möglich:

sorted_employee_list = sorted(employee_list, key=attrgetter("age"), reverse=True)

Als Ergebnis erhält man also folgende Ausgabe:

('Jenny', 56)
('Tim', 55)
('Kendra', 43)

Für weitere Informationen zu diesem Thema empfiehlt es sich, einen Blick in die entsprechende Python-Dokumentation zu werfen.

Zuletzt aktualisiert am 26. Februar 2024