Wenn man ein dict alphabetisch sortieren und gleichzeitig nach Anfangsbuchstaben sortieren will hat man zunächst einmal zwei Probleme. Erstens ist ein dict eine Hashmap, also unsortiert, zweitens ist es immer eingeteilt in key:value. Also auf zwei Werte beschränkt. Und dann unterscheidet Python bei sortieren zwischen Groß- und Kleinschreibung.
Folgendes könnte also zum Erfolg führen:
1 from itertools import groupby
2
3 def group(d):
4 items = sorted(d.iteritems(), key=lambda item: item[0].upper())
5 return groupby(items, key=lambda item: item[0][:1].upper())
Verwendung:
1 >>> d = {
2 'Mustermann Max': 34325235325,
3 'Mustermann Eva': 324234324,
4 'Musterfrau Petra': 324234,
5 'Müller Max': 324234,
6 'Dietrich Anton': 324324234,
7 'Schuster Fritz': 234324234
8 }
9 >>> for char, data in group(d):
10 print ' - \n|%s|\n - ' % char
11 for name, number in data:
12 print ' %s: %i' % (name, number)
Ausgabe:
- |D| - Dietrich Anton: 324324234 - |M| - Musterfrau Petra: 324234 Mustermann Eva: 324234324 Mustermann Max: 34325235325 Müller Max: 324234 - |S| - Schuster Fritz: 234324234