Seite 1 von 1

Wie kann ich Elemente einer Liste gruppieren?

Verfasst: Dienstag 8. Mai 2012, 18:08
von beetronic
Hallo!

Ich bekomme aus einer DB-Abfrage ein iterierbares Objekt events.
events enthält einzelne Events, das sind Einträge in einem Kalender,
mit einer Zeit(unix time stamp), einem Titel und einer Beschreibung.

Für jeden Tag kann es 0..n Events geben. Ich würde nun gerne die
Events nach Tagen gruppieren, um dann sowas machen zu können:

Code: Alles auswählen

for d in days:
  print '---', d.day, '---'
  for e in d.events:
    print datetime.fromtimestamp(e.time).strftime('%d.%m.%Y'), 
          e.title,
          e.description
Tage ohne zugehöriges Event sollen in days nicht auftauchen.

Kann mir jemand einen Tip geben, wie sich das möglichst elegant realisieren
lässt? Wären list comprehensions dafür geeignet, oder bin ich damit auf dem
Holzweg?

Gruss + Dank, bt

Re: Wie kann ich Elemente einer Liste gruppieren?

Verfasst: Dienstag 8. Mai 2012, 18:19
von BlackJack
@beetronic: `itertools.groupby()` ist das Werkzeug für den Job. Die Ergebnisse sollten dafür nach Zeitstempel sortiert sein.

Re: Wie kann ich Elemente einer Liste gruppieren?

Verfasst: Dienstag 8. Mai 2012, 18:37
von beetronic
BlackJack hat geschrieben:@beetronic: `itertools.groupby()` ist das Werkzeug für den Job. Die Ergebnisse sollten dafür nach Zeitstempel sortiert sein.
Super, danke für den Tip! Kurzes Googeln forderte folgende
schöne Beschreibung zu Tage
http://stackoverflow.com/questions/773/ ... ls-groupby

VG, bt