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