Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:sorted
  • Builtin-Funktion zum sortieren beliebiger Iterateables (tuple, namedtuple, list, dict)
  • man kann optional definieren nach welchen Kriterien die Einträge sortiert werden sollen (zum Beispiel bei list, dict, tuple nach einem bestimmten Index, bei namebdtuples, Objekten nach einem Attribut usw.)
    • intern iteriert sorted über die Felder/Einträge im übergebenen Iterateable
    • hierzu muss eine Funktion (lambda) übergeben werden, die bekommt als Parameter bei jeder Iteration den aktuellen Eintrag/Feld aus dem Iterateable und muss den Wert/Feld aus dem Eintrag zurückgeben nach dem sortiert werden soll
  • zurück kommt eine sortierte Liste mit den Einträgen des Eingabe-Iterateables

persons = [{"vorname":"peter", "nachname":"schäfer", "alter":45}, {"vorname":"Alexander", "nachname":"Brand", "alter":22}, {"vorname":"Hildebert", "nachname":"König", "alter":89}]
print(sorted(persons, key=lambda person: person.alter))
Obiges Beispiel würde zurückgeben: [{„vorname“:„Alexander“, „nachname“:„Brand“, „alter“:22}, {„vorname“:„peter“, „nachname“:„schäfer“, „alter“:45}, {„vorname“:„Hildebert“, „nachname“:„König“, „alter“:89}]
Weil in die lambda-Funkion die den key-Parameter (der muss benamt sein) speist bei jedem neuen Element was sorted aus „persons“ ausließt den aktuellen Wert/Feld aus „persons“ bekommt als Variable „person“ und aus „person“ (dict) das Feld „alter“ zurückgibt, welches dann zum sortieren der Einträge genutzt wird.

  • angegeben werden muss nur das Iterateable → das ist für eine liste von Strings oder ints ausreichend, es werden dann einfach nur die Elemente sortiert
  • key-Parameter definiert bei komplexern Einträgen im übergebenen Iterateable welcher Attribut/Feld als Sortierschlüssel benutzt werden soll → es wird dann nur danach sortiert
    • es sind auch Kombinationen aus mehreren Feldern/Attributen möglich, in dem lambda ein tuple aus diesen bildet und zurück gibt (key nimmt nur einen Wert an)
python/sorted.txt · Zuletzt geändert: 2020/03/05 14:28 von root