Dictionaries entsprechen nun Listen, die quasi ungeordnet sind. Statt über einen Index wird auf einzelne Teile des Dictionaries über Schlüsselobjekte zugegriffen. Dictionaries werden in Mengenklammern eingeschlossen, denn wie bei einer mathematischen Menge ist die Reihenfolge egal, da es Schlüsselobjekte gibt. Ein Beispiel, das Sie unbedingt ausprobieren sollten:
>>>lexikon['eins']
[1,2]
>>>lexikon[2]
('8',9)
>>>
Während in Listen den einzelnen Objekten, die die Listenkomponenten darstellen, ein Name, nämlich listename[i] , zugewiesen wird, ist dies bei den Dictionaries anders. Das Dictionary stellt keine Zuordnung zwischen Namen und Objekten, sondern zwischen Objekten und Objekten her. Sie »bilden« also Objekte auf andere Objekte ab. Daher werden Dictionaries auch als Abbildungen bezeichnet.
Es dürfen auch Namen Schlüssel sein, sofern sie auf ein Objekt zeigen. Geben Sie bitte ein:
>>>lexikon={'eins': [1,2], anna: ('8',9)}
>>>lexikon[anna]
('8',9)
>>>
Genauso wie Listen, sind Dictionaries an Ort und Stelle veränderlich!
In der Abbildung
werden noch
einmal Dictionaries mit Strings, Listen und Tupeln verglichen. Oben
in dieser Abbildung sehen wir einen String, auf den wir zwar durch
Indizierung stringname[i] zugreifen können. Es ist aber
nicht möglich, den Inhalt der Stelle mit der Nummer i zu verändern.
Um sich zu merken, dass die Indizierung stets bei
und nicht bei
beginnt, denken Sie sich an Stelle der einzelnen Stellen die
Schnitte zwischen den Stellen numeriert. Die Stelle rechts
von dem Schnitt ist dann diejenige, die zu der jeweiligen Nummer gehört.
Ein Tupel und eine Liste unterscheiden sich vom String dadurch, dass sie verschiedene Objekte als Inhalt haben können. Dabei können die Objekte sehr wohl durch ihre Namen ersetzt werden, wenn ihnen denn solche zugeordnet sind. Ein Tupel ist dabei wieder ein unveränderliches Gebilde, während bei einer Liste die Inhalte der einzelnen Stellen ausgetauscht werden können. Die Liste selbst kann sogar schrumpfen und wachsen.
Wie nun ein Dictionary arbeitet sehen Sie rechts. Hier werden Objekte anderen Objekten zugeordnet, aber nicht zugewiesen. Ein Aufruf eine Schlüsselobjektes (Objekt, von dem der Pfeil ausgeht) geschieht durch dictionaryname[schluesselobjekt]. Ausgegeben wird dann das Objekt, dem schluesselobjekt zugewiesen wurde. Sie sehen, dass durch diese Zuordnung keine auf eine »Reihenfolge« verzichtet werden kann. Werden als Schlüsselobjekte ausschliesslich Zahlen verwendet, so ersetzt das Dictionary quasi eine Liste. Auf diese Weise lassen sich Listen realisieren, deren Indizierung z.B. nur durch gerade Zahlen erfolgen soll, während Indizierungen durch ungerade Zahlen aus irgendwelchen Gründen nicht vorkommen sollen. Ein Dictionary ist also eine noch flexiblere »Liste« als die Liste selbst.