Probleme mit Dict

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
Hartmannsgruber
User
Beiträge: 89
Registriert: Mittwoch 15. Januar 2014, 22:30
Wohnort: Bad Kötzting
Kontaktdaten:

Servus liebes Forum,

ich habe mal wieder eine wohl ziemlich einfache Frage, aber ich weis leider nicht weiter :(

Also:
Ich habe ein Dict (dict_1), dieses Dict benutzt als Schlüssel, Zahlen.
Der dazugehörige Wert ist wieder ein Dict.
Das Dict das hier als Wert dient, hat als Schlüssel, Name und Alter.
so weit erst mal.

Code: Alles auswählen

dict_1 = {0 : {"Name" : "Anton", "Alter" : 20}, 
          1 : {"Name" : "Berta", "Alter" : 19}}
Ich möchte nun alle Schlüssel ausgeben die im Wert von 0 enthalten sind.
Ich probierte es so:

Code: Alles auswählen

inf = dict_1[0].key()
print (inf)
Wo ist mein Denkfehler? Ich sitze mittlerweile schon 5 std davor und komm nicht weiter :(
Bitte erklären "wie und "warum", Danke :D
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Es heißt "keys" und nicht "key". Bei deiner nächsten Frage wäre es auch sehr hilfreichen wenn du sagst, *was* nicht funktioniert und was du als Ergebnis erwartest. Dazu dann noch die komplette Fehlermeldung (falls es eine gibt), inklusive Traceback.
Das Leben ist wie ein Tennisball.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wieso heißt das Ding so komisch? ``dict_1`` ist wirklich ein sehr schlechter Name, denn

- erstens sollte man *niemals* Variablen durchnummerieren; das ist fast immer ein Indiz. dass man gleichartige Objekte in eine Datenstruktur zusammen fassen sollte.

- zweitens sollte man keine Typinformationen in einem Namen packen. Wähle Namen stets so, dass Du sofort weißt, was sich dahinter verbirgt. In diesem Falle hast Du es wohl offenbar mit Personen zu tun. Wieso also nicht schlicht ``personen``? Zudem ist so ein Typ schlecht, da sich der Typ des Objektes auch mal ändern kann - vergisst Du den Namen anzupassen, lügt dieser ab sofort.

In diesem Falle könnte es sinnvoll sein, das äußere Dictionary durch eine Liste zu ersetzen, sofern der Schlüssel fortlaufend und wirklich numerisch ist. Denn dann kann man auch einfach per Index auf die Elemente (also die inneren Dictionaries) zugreifen.

(Und wenn man das so ändert, passt wie oben erwähnt der Name nicht mehr ;-) )
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Hartmannsgruber
User
Beiträge: 89
Registriert: Mittwoch 15. Januar 2014, 22:30
Wohnort: Bad Kötzting
Kontaktdaten:

Okay, der Fehler war wohl jetzt echt peinlich und das mit der besseren Beschreibung merk ich mir... :oops:
Solls mir diesmal als Neulig aber noch verziehen sein.

der Name dict_1 sollte hier nur zur besseren veranschaulichung dienen. Bei mir heist das dict tatsächlich personen.^^

Vielen Dank für euere Hilfe, ist ein tolles Forum hier :-D
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Hartmannsgruber hat geschrieben: der Name dict_1 sollte hier nur zur besseren veranschaulichung dienen. Bei mir heist das dict tatsächlich personen.^^
Wie kann ein Name für Dich gut, aber für uns schlecht sein? ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

@Hyperion: Datenschutz. Am Ende denken wir noch Anton und Berta waeren Personen :mrgreen:
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ach ich Depp... :mrgreen:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten