Liste der Objekte in Python sortieren

Vaibhhav Khetarpal 10 Oktober 2023
  1. Verwenden Sie die Methode list.sort(), um die Liste der Objekte in Python zu sortieren
  2. Verwenden Sie die Funktion sorted(), um die Liste der Objekte in Python zu sortieren
Liste der Objekte in Python sortieren

Python-Listen sind nicht homogen, wodurch sie sich von den anderen in Python bereitgestellten Datentypen unterscheiden.

Die Indizierung einer Liste beginnt mit 0 als erstem Index und erfolgt sequentiell. Alle Elemente in der Liste haben ihren festen Platz, weshalb Duplizierungen in Listen erlaubt sind.

In diesem Tutorial werden verschiedene Methoden zum Sortieren der Objektliste in Python vorgestellt.

Verwenden Sie die Methode list.sort(), um die Liste der Objekte in Python zu sortieren

Die Methode list.sort() sortiert alle Listenelemente auf- oder absteigend.

Es enthält zwei optionale Parameter, key und reverse. Der Parameter key dient, wie der Name schon sagt, als Schlüssel für den Sortiervorgang. Mit dem Parameter reverse wird die Sortierreihenfolge festgelegt. Ist der Wert von reverse True, erfolgt die Sortierung in umgekehrter/absteigender Reihenfolge.

Die Funktion funktioniert jedoch ohne die Verwendung der oben genannten optionalen Parameter einwandfrei.

Der folgende Code verwendet die Methode list.sort(), um die Liste der Objekte in Python zu sortieren.

class BankEMP:
    def __init__(self, name, dept, age):
        self.name = name
        self.dept = dept
        self.age = age

    def __repr__(self):
        return "{" + self.name + ", " + self.dept + ", " + str(self.age) + "}"


if __name__ == "__main__":

    emps = [
        BankEMP("Elijah", "IT", 20),
        BankEMP("Nik", "Banking", 21),
        BankEMP("Lucien", "Finance", 19),
    ]
    # sort list by `name` in the natural order
    emps.sort(key=lambda x: x.name)
    print(emps)

    # sort list by `name` in reverse order
    emps.sort(key=lambda x: x.name, reverse=True)
    print(emps)

Ausgabe:

[{Elijah, IT, 20}, {Lucien, Finance, 19}, {Nik, Banking, 21}]
[{Nik, Banking, 21}, {Lucien, Finance, 19}, {Elijah, IT, 20}]

Um den Wert für den Parameter key zu erzeugen, können wir operator.attrgetter() verwenden.

attrgetter() wird aus dem operator-Modul importiert und wird verwendet, um ein aufrufbares Objekt zurückzugeben, das das Attribut von seinem Operanden holt.

Der folgende Code verwendet die Methode list.sort() und operator.attrgetter(), um die Liste der Objekte in Python zu sortieren.

from operator import attrgetter


class BankEMP:
    def __init__(self, name, dept, age):
        self.name = name
        self.dept = dept
        self.age = age

    def __repr__(self):
        return "{" + self.name + ", " + self.dept + ", " + str(self.age) + "}"


if __name__ == "__main__":

    emps = [
        BankEMP("Elijah", "IT", 20),
        BankEMP("Nik", "Banking", 21),
        BankEMP("Lucien", "Finance", 19),
    ]
    # sort list by name in the natural order using 'attrgetter()'
    emps.sort(key=attrgetter("name"))

    print(emps)

Ausgabe:

[{Elijah, IT, 20}, {Lucien, Finance, 19}, {Nik, Banking, 21}]

Verwenden Sie die Funktion sorted(), um die Liste der Objekte in Python zu sortieren

Python bietet eine eingebaute Funktion sorted(), die als Alternative zur Funktion list.sort() dienen kann.

Während list.sort() keinen bestimmten Wert zurückgibt und Änderungen an der Originalliste vornimmt, gibt die Funktion sorted() die sortierte Liste zurück, anstatt Änderungen an der Originalliste vorzunehmen.

Die Funktion sorted() enthält als optionalen Parameter nur reverse.

Der folgende Code verwendet die Funktion sorted(), um die Liste der Objekte in Python zu sortieren.

class BankEMP:
    def __init__(self, name, dept, age):
        self.name = name
        self.dept = dept
        self.age = age

    def __repr__(self):
        return "{" + self.name + ", " + self.dept + ", " + str(self.age) + "}"


if __name__ == "__main__":

    emps = [
        BankEMP("Elijah", "IT", 20),
        BankEMP("Nik", "Banking", 21),
        BankEMP("Lucien", "Finance", 19),
    ]

    # sort list in natural order of name using sorted() function
    sort1 = sorted(emps, key=lambda x: x.name)
    print(sort1)

Ausgabe:

[{Elijah, IT, 20}, {Lucien, Finance, 19}, {Nik, Banking, 21}]
Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

Verwandter Artikel - Python List