Nach Alphabet gruppierte Liste ausgeben

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

Nach Alphabet gruppierte Liste ausgeben (last edited 2010-07-04 08:35:38 by p54BFDFD5)