List sorten

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
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

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:

Code: Alles auswählen

['a1', '1', '2']
['x1', '3', '5']
['b1', '6', '8']
Viele Grüße
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

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.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Danke es funktioniert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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']]
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

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?! :wink:
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Danke für itemgetter Beispiel.
Antworten