Wenn Du aus Fehlern lernen willst, solltest Du wissen was die Fehler waren. Erkläre mal was hierbei herauskommt und *warum*:
Code: Alles auswählen
print adressbuch[0], [1] # ergibt keine sinnvolle Ausgabe
Und bitte, bitte hör mit diesem ``range(len(liste))`` auf. Das wurde Dir jetzt schon mehrfach gesagt. Die Namen `eintrag` und `feldname` sind in dem Quelltext für die "Listen von Listen" irreführend weil es Indexe und keine Einträge oder Namen sind. Hier würden sie passen:
Code: Alles auswählen
for eintrag in adressbuch:
for feldname, feld_wert in zip(FELDNAMEN, eintrag):
print feldname, feld_wert
Ein Dictionary enthält Schlüssel und Werte und man kann über diese Paare mit den entsprechenden Methoden, wie `items()` was eine Liste erzeugt, oder `iteritems()` was einen Iterator über die Elemente zurückgibt, in einer Schleife iterieren und sie darin ausgeben. Oder `keys()`, `iterkeys()`, `values()` oder `itervalues()` für Schlüssel oder Werte.
Im Dictionary-Versuch sind zu viele Daten im Wert. Da haben sich Feldbezeichnungen eingeschlichen. Und man sollte den Namen mit in den Wert einfügen, sonst muss man ihn bei der Ausgabe gesondert behandeln.
Code: Alles auswählen
adressbuch = {'Muster Max':['Muster Max', 'Musterstrasse 1',
'Musterhausen 1000', '0123456789', '087654321',
'max-muster@max.de', 'muster']}
for name, felder in adressbuch.iteritems():
for feldname, feld_wert in zip(FELDNAMEN, felder):
print feldname, feld_wert
Ich denke aber nicht das ein Dictionary hier die richtige Datenstruktur ist, weil man selten exakt den kompletten Namen sucht. Für andere Suchen muss man dann trotzdem wieder linear alle Einträge durchgehen. Und Dictionaries sind ungeordnet, Adressen sortiert man aber ganz gerne.