Die Freuden von itertools.groupby()
Verfasst: Montag 10. März 2008, 13:49
Um eine Liste von Objekte nach einem gemeinsamen Merkmal zu gruppieren, habe ich neulich itertools.groupby() entdeckt. Wegen solcher Dinge liebe ich Python!
Edit: movies.sort(key=...) statt movies.sort(...)
Code: Alles auswählen
import itertools
import pprint
class Movie(object):
def __init__(self, title, sortingtitle):
self.title = title
self.sortingtitle = sortingtitle
def __repr__(self):
return self.title
movies = [Movie("Terminator 2", "Terminator 2"),
Movie("Das Leben der Anderen", "Leben der Anderen, Das"),
Movie("Das Leben ist ein langer ruhiger Fluss", "Leben ist ein langer ruhiger Fluss"),
Movie("Der Vater der Braut", "Vater der Braut, Der")]
movies.sort(key=lambda m: m.sortingtitle)
grouped_movies = [(k, list(g)) for k, g in
itertools.groupby(movies, lambda x: x.sortingtitle[0].upper())]
pprint.pprint(grouped_movies)
# =>
# [('L', [Das Leben der Anderen, Das Leben ist ein langer ruhiger Fluss]),
# ('T', [Terminator 2]),
# ('V', [Der Vater der Braut])]