Seite 1 von 1

Liste nach Datum sortieren

Verfasst: Sonntag 14. Oktober 2018, 07:51
von snowflake
Hallo zusammen,

ich möchte eine Liste mit Listen nach dem Datum sortieren lassen. Mit folgendem Ansatz wird allerdings nicht nach dem Datum, sondern nur nach den Ziffern sortiert. Ich finde keinen Ansatz wie ich das Problem lösen kann.

Code: Alles auswählen

liste = [[1, 417, 24, '27.06.2018', 'Vorlage 1', ''],\
         [5, 592, 24, '18.10.2017', 'Vorlage 14', ''],\
         [1, 538, 24, '24.08.2017', 'Vorlage 16', ''],\
         [2, 551, 24, '03.09.2019', 'Vorlage 15', ''],\
         [3, 565, 24, '13.09.2017', 'Vorlage 117', ''],\
         [6, 606, 24, '25.01.2018', 'Vorlage 19', ''],\
         [4, 578, 24, '18.10.2017', 'Vorlage 111', ''],\
         [7, 320, 24, '21.06.2016', 'Vorlage 10', '']]

liste.sort(key=lambda tup: tup[3])

for zeile in liste:
    print(zeile)
Das Ergebnis sieht dann so aus:

Code: Alles auswählen

[2, 551, 24, '03.09.2019', 'Vorlage 15', '']
[3, 565, 24, '13.09.2017', 'Vorlage 117', '']
[5, 592, 24, '18.10.2017', 'Vorlage 14', '']
[4, 578, 24, '18.10.2017', 'Vorlage 111', '']
[7, 320, 24, '21.06.2016', 'Vorlage 10', '']
[1, 538, 24, '24.08.2017', 'Vorlage 16', '']
[6, 606, 24, '25.01.2018', 'Vorlage 19', '']
[1, 417, 24, '27.06.2018', 'Vorlage 1', '']
Hat jemand eine Idee wie ich nach dem tatsächlichen Datum sortieren kann?

Vielen Dank und sonnige Grüße.

snowflake

Re: Liste nach Datum sortieren

Verfasst: Sonntag 14. Oktober 2018, 08:38
von nezzcarth
snowflake hat geschrieben: Sonntag 14. Oktober 2018, 07:51 Mit folgendem Ansatz wird allerdings nicht nach dem Datum, sondern nur nach den Ziffern sortiert.
Na ja, du musst Python schon auch sagen, dass es sich dabei um Datumsangaben handelt... ;) Schau dir mal das 'datetime' Modul in der Standardbibliothek an. Damit (d.h. z.B. mit 'datetime.datetime.strptime') kannst du aus dem String ein Objekt erzeugen, das solche Vergleichsoperationen implementiert. Falls du die Möglichkeit hast, das Datumsformat in 'Jahr Monat Tag' zu ändern, ist das eine andere, einfache Möglichkeit.

Re: Liste nach Datum sortieren

Verfasst: Sonntag 14. Oktober 2018, 11:02
von snowflake
Hallo nezzcarth,

jetzt hab ich es, danke für den Tipp. So geht es:

Code: Alles auswählen

liste.sort(key=lambda tup: datetime.datetime.strptime(tup[3], '%d.%m.%Y'))
Viele Grüße

snowflake

Re: Liste nach Datum sortieren

Verfasst: Sonntag 14. Oktober 2018, 17:33
von sls
@snowflake: die Backslashs hinter den einzelnen Listenelementen sind übrigens überflüssig.