Seite 1 von 1

Anfängerproblem mit Dictionaries

Verfasst: Donnerstag 28. Februar 2008, 19:50
von KlausS
Hallo zusammen,
ich bin in meinem Buch OOP mit Python gerade bei den Dictionaries angekommen und habe ein Verständsproblem mit folgendem Code:

Code: Alles auswählen

zufall = random.randint(0, len(d.keys())-1)
vokabel = d.keys()[zufall]
Die zweite Zeile weist der Variablen "vokabel" den Wert des Dictionaries d mit der Position "zufall" zu.
Ich kann aber in keinem meiner Bücher oder Tutorials diese Zuweisung i.V.m. der .keys() Methode finden und mir ist nicht klar, warum das so funktioniert.
Kann mir jemand mal kurz auf die Sprünge helfen.

Danke
Klaus

Re: Anfängerproblem mit Dictionaries

Verfasst: Donnerstag 28. Februar 2008, 19:57
von Gnushi
Hi KlausS!
KlausS hat geschrieben:Ich kann aber in keinem meiner Bücher oder Tutorials diese Zuweisung i.V.m. der .keys() Methode finden und mir ist nicht klar, warum das so funktioniert.

Hilft:

Code: Alles auswählen

>>> d = {1 : 'a', 2 : 'b'}
>>> d.keys()
[1, 2]
>>> d.keys()[1]
2
>>>    


weiter?

Gruß

GnuShi

Verfasst: Donnerstag 28. Februar 2008, 20:06
von KlausS
Hi GnuShi,

wenn ich ehrlich sein soll, dann nein. Das Brett vor dem Kopf scheint doch dicker zu sein. Das es funktioniert und was dabei herauskommt, ist mir klar. Aber warum. So wie ich die Syntax lese, rufe ich alle Schlüsselwerte des dict d mit der Methode keys() auf und hänge außerhalb der Klammern eine Liste mit einem Eintrag an.
Ist das so richtig?

Klaus

Verfasst: Donnerstag 28. Februar 2008, 20:08
von numerix
Vielleicht besser so, damit man nicht versehentlich Listenindex und key verwechselt ...

Code: Alles auswählen

>>> d = {'dog':'Hund', 'cat':'Katze'}
>>> d.keys()
['dog', 'cat']
>>> d.keys()[1]
'cat'
>>>

Verfasst: Donnerstag 28. Februar 2008, 20:14
von Gnushi
KlausS hat geschrieben:Aber warum. So wie ich die Syntax lese, rufe ich alle Schlüsselwerte des dict d mit der Methode keys() auf und hänge außerhalb der Klammern eine Liste mit einem Eintrag an.
Die Methode keys() gibt dir eine Liste zurück. Eine Liste kann man indizieren, meineKeys[4] gibt dir das 5. Element zurück.

Beide Teile kann man in eine Zeile schreiben, also statt:

Code: Alles auswählen

meineKeys = meinDict.keys()
fuenfterKey= meineKeys[4]
schreibt man auch:

Code: Alles auswählen

fuenfterKey = meinDict.keys()[4]
@pütone: Du hast Recht.

Grüße

GnuShi

Verfasst: Donnerstag 28. Februar 2008, 20:17
von KlausS
Irgendwie fehlt der Zündfunke. Wieso kann ich nach der Methode .keys() einfach eine Liste mit einer Position angeben. Ich finde nirgendwo einen entsprechenden Hinweis, warum das funktioniert.

Klaus

Verfasst: Donnerstag 28. Februar 2008, 20:23
von KlausS
Hallo GnuShi,

jetzt habe ich es verstanden. Das Problem war einfach, dass mir im Moment nicht präsent war, dass .keys() eine Liste zurückgibt :oops:.

Danke für die Tipps.