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
snowflake
User
Beiträge: 93
Registriert: Mittwoch 9. November 2016, 15:46

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
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

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.
snowflake
User
Beiträge: 93
Registriert: Mittwoch 9. November 2016, 15:46

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
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

@snowflake: die Backslashs hinter den einzelnen Listenelementen sind übrigens überflüssig.
When we say computer, we mean the electronic computer.
Antworten