Seite 1 von 1
List sorten
Verfasst: Donnerstag 20. Mai 2010, 11:53
von mit
Hallo,
ich habe eine Liste die weitere Listen beinhaltet z.B
Code: Alles auswählen
l = [["x1","3","5"],["a1","1","2"],["b1","6","8"]]
for a in l:
print a
Wie könnte ich die Liste sortieren (nach dem zweiten Element) so dass ich folgende Ausgabe erhalte:
Viele Grüße
Re: List sorten
Verfasst: Donnerstag 20. Mai 2010, 12:17
von jbs
Vielleicht mit der sort funktion?!
Code: Alles auswählen
>>> l = [["x1","3","5"],["a1","1","2"],["b1","6","8"]]
>>> sorted(l)
[['a1', '1', '2'], ['b1', '6', '8'], ['x1', '3', '5']]
Ah, zu schnell gelesen.
Code: Alles auswählen
>>> sorted(l, key=lambda e: e[1])
[['a1', '1', '2'], ['x1', '3', '5'], ['b1', '6', '8']]
Besser ist noch itemgetter aus operator.
Re: List sorten
Verfasst: Donnerstag 20. Mai 2010, 13:25
von mit
Danke es funktioniert.
Re: List sorten
Verfasst: Donnerstag 20. Mai 2010, 14:33
von Hyperion
Oder mit itemgetter():
Code: Alles auswählen
In [16]: from operator import itemgetter
In [17]: l = [["x1","3","5"],["a1","1","2"],["b1","6","8"]]
In [18]: l.sort(key=itemgetter(2))
In [19]: l
Out[19]: [['a1', '1', '2'], ['x1', '3', '5'], ['b1', '6', '8']]
Re: List sorten
Verfasst: Donnerstag 20. Mai 2010, 15:35
von ms4py
Hyperion hat geschrieben:Oder mit itemgetter():
Code: Alles auswählen
In [16]: from operator import itemgetter
In [17]: l = [["x1","3","5"],["a1","1","2"],["b1","6","8"]]
In [18]: l.sort(key=itemgetter(2))
In [19]: l
Out[19]: [['a1', '1', '2'], ['x1', '3', '5'], ['b1', '6', '8']]
Müsste das nicht `itemgetter(1)` heißen, wenn er nach dem zweiten Element sortieren will?!

Re: List sorten
Verfasst: Freitag 21. Mai 2010, 11:38
von mit
Danke für itemgetter Beispiel.