Liste, sort(key=?)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Hallo zusammen,

wie funktioniert das bei sort() mit der Angabe eines keys?

Könnt ihr mir da mal ein paar einfache Beispiele zeigen, bitte?

Vielen Dank im Voraus,

rolgal_reloaded
BlackJack

`key` muss eine Funktion sein, die ein Listenelement bekommt und einen Schlüssel zum Sortieren zurückgibt. Ganz einfaches Beispiel:

Code: Alles auswählen

In [43]: a = [(1, 'x'), (5, 'a'), (3, 'd')]

In [44]: a.sort(key=lambda x: x[0])

In [45]: a
Out[45]: [(1, 'x'), (3, 'd'), (5, 'a')]

In [46]: a.sort(key=lambda x: x[1])

In [47]: a
Out[47]: [(5, 'a'), (3, 'd'), (1, 'x')]
Einmal wird nach dem ersten Element in den Tupeln sortiert, das andere mal nach dem zweiten Element.

In der Funktion kann man natürlich auch kompliziertere Sachen anstellen. Zum Beispiel wenn man eine Liste mit Tupeln hat, die Koordinaten darstellen, könnte man sie, mit der entsprechenden Berechnung, nach der Entfernung zu einem bestimmten Punkt sortieren lassen.

Bevor es dieses Argument gab, hat man die Funktionalität von Hand implementiert. Ungefähr so:

Code: Alles auswählen

def sorted_(iterable, key):
    result = [((key(item), item) for item in iterable]
    result.sort()
    return [item for dummy, item in result]
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

@BlackJack

Ich habe deine Anwendung von sort mit key in deinem Beispiel nicht übersehen :wink:

Jetzt ist aber noch einiges klarer :D

LG

r_r
Antworten