Wie kann ich Elemente einer Liste gruppieren?

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
beetronic
User
Beiträge: 33
Registriert: Mittwoch 2. Mai 2007, 10:23

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
BlackJack

@beetronic: `itertools.groupby()` ist das Werkzeug für den Job. Die Ergebnisse sollten dafür nach Zeitstempel sortiert sein.
beetronic
User
Beiträge: 33
Registriert: Mittwoch 2. Mai 2007, 10:23

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
Antworten