Anfängerproblem mit Dictionaries

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.
KlausS
User
Beiträge: 40
Registriert: Donnerstag 24. Januar 2008, 08:52
Wohnort: Leverkusen

Anfängerproblem mit Dictionaries

Beitragvon KlausS » Donnerstag 28. Februar 2008, 19:50

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
Gnushi
User
Beiträge: 77
Registriert: Dienstag 12. Dezember 2006, 09:49

Re: Anfängerproblem mit Dictionaries

Beitragvon Gnushi » Donnerstag 28. Februar 2008, 19:57

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
KlausS
User
Beiträge: 40
Registriert: Donnerstag 24. Januar 2008, 08:52
Wohnort: Leverkusen

Beitragvon KlausS » Donnerstag 28. Februar 2008, 20:06

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
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Donnerstag 28. Februar 2008, 20:08

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'
>>>
Gnushi
User
Beiträge: 77
Registriert: Dienstag 12. Dezember 2006, 09:49

Beitragvon Gnushi » Donnerstag 28. Februar 2008, 20:14

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
KlausS
User
Beiträge: 40
Registriert: Donnerstag 24. Januar 2008, 08:52
Wohnort: Leverkusen

Beitragvon KlausS » Donnerstag 28. Februar 2008, 20:17

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
KlausS
User
Beiträge: 40
Registriert: Donnerstag 24. Januar 2008, 08:52
Wohnort: Leverkusen

Beitragvon KlausS » Donnerstag 28. Februar 2008, 20:23

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.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Google [Bot]