Liste in Liste nach Datum sortieren

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
DMD
User
Beiträge: 123
Registriert: Sonntag 17. Mai 2015, 03:34

hey leute
ich habe folgende liste:

Code: Alles auswählen

reihe = [['08.10.2015', 'F', '15', '45', '6', '4', '2.0'], ['12.10.2015', 'G', '15', '45', '9', '9', '0.0'], ['05.10.2015', 'A', '15', '45', 1.0, '---', '---'], ['05.10.2015', 'B', '15', '45', 2.0, '---', '---'], ['05.10.2015', '---', '---', '---', 3.0, 9.0, -6.0], ['07.10.2015', 'C', '15', '45', 3.0, '---', '---'], ['07.10.2015', 'D', '15', '45', 4.0, '---', '---'], ['07.10.2015', 'E', '15', '45', 9.0, '---', '---'], ['07.10.2015', '---', '---', '---', 16.0, 9.0, 7.0], ['19.10.2015', 'H', '15', '45', 9.0, '---', '---'], ['19.10.2015', 'I', '15', '45', 9.0, '---', '---'], ['19.10.2015', 'J', '15', '45', 8.0, '---', '---'], ['19.10.2015', '---', '---', '---', 26.0, 9.0, 17.0]]
die würde ich gern nach datum sortiert ausgeben.
leider finde ich dazu nichts im netz :(
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

In der Doku hast Du vermutlich nicht geguckt? Da wird sogar ein spezielles Tutorial verlinkt.

Eigentlich braucht man ``sorted`` nur mit der Liste aufrufen ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Hyperion hat geschrieben:Eigentlich braucht man ``sorted`` nur mit der Liste aufrufen ;-)
Uneigentlich muss man das erste Element jeder inneren Liste noch in ein ordentliches Datum konvertieren.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

/me hat geschrieben: Uneigentlich muss man das erste Element jeder inneren Liste noch in ein ordentliches Datum konvertieren.
Das war ja nicht die Frage... ging ja konkret um *gezeigte* Liste mit den speziellen Werten... damit klappt das so :P
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@Hyperion: auch im spitzfindigsten Lesen heißt "nach dem Datum sortieren", dass erst nach Jahr, dann nach Monat und dann nach Tag sortiert werden soll.

@DMD: diese Liste sehen wir ja jetzt nicht zum ersten Mal und jedes Mal wieder wirst Du darauf hingewiesen, dass Du die Einträge in ein sinnvolles Format konvertieren solltest, also Datum zu datetime-Objekt, Zahlen nach int oder float, usw. und das ganze in ein Objekt oder (named)Tuple. Das sollte Dir doch endlich mal zu denken geben :evil: .
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

billiger Würg-Around: schreibe das Datum im ISO 8601 Format in die Liste, dann ist auch die Sortierung mit `sorted` korrekt :P

Gruß, noisefloor
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Sirius3 hat geschrieben:@Hyperion: auch im spitzfindigsten Lesen heißt "nach dem Datum sortieren", dass erst nach Jahr, dann nach Monat und dann nach Tag sortiert werden soll.
Im spitzfindigen Modus fragte der OP aber nach *dieser* Liste - und dabei ist das Ergebnis exakt dasselbe, auch wenn die Sortierung *nicht* in dieser Reihenfolge erledigt wird.

Natürlich war der Hinweis von /me richtig und ja, ich habe das vorhin schlicht übersehen, weil ich beim OP sofort an das naheliegende dachte, dass er keinen Plan hat, *wie* man an sich sortiert. Und ehrlich gesagt glaube ich das auch immer noch, dass das zunächst sein eigentliches Problem war... und nebenbei zeigt er uns eh ständig Probleme mit suboptimalen Datenstrukturen, da fällt es schwer sich darauf noch zu konzentrieren ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
DMD
User
Beiträge: 123
Registriert: Sonntag 17. Mai 2015, 03:34

thanx ich werd versuchen...
Zuletzt geändert von DMD am Freitag 30. Oktober 2015, 21:46, insgesamt 1-mal geändert.
DMD
User
Beiträge: 123
Registriert: Sonntag 17. Mai 2015, 03:34

jo funzt:

Code: Alles auswählen

reihe.sort(key=lambda x: datetime.datetime.strptime(x[0], '%d.%m.%Y'))
danke euch
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@DMD: eine stark typisierte Sprache wie Python ist nichts für Dich. Geh zu PHP. :evil:
Antworten