Ist es möglich, Strings als Indizes in einem Array in Python zu verwenden?
Zum Beispiel:
myArray = []
myArray["john"] = "johns value"
myArray["jeff"] = "jeffs value"
print myArray["john"]
Antworten:
Was Sie wollen, wird als assoziatives Array bezeichnet . In Python werden diese Wörterbücher genannt .
Wörterbücher werden manchmal in anderen Sprachen als "assoziative Erinnerungen" oder "assoziative Arrays" gefunden. Im Gegensatz zu Sequenzen, die durch eine Reihe von Zahlen indiziert sind , werden Wörterbücher durch Schlüssel indiziert, die einen beliebigen unveränderlichen Typ haben können . Zeichenfolgen und Zahlen können immer Schlüssel sein.
myDict = {}
myDict["john"] = "johns value"
myDict["jeff"] = "jeffs value"
Alternative Möglichkeit, das obige Diktat zu erstellen:
myDict = {"john": "johns value", "jeff": "jeffs value"}
Zugriff auf Werte:
print(myDict["jeff"]) # => "jeffs value"
Abrufen der Schlüssel (in Python v2):
print(myDict.keys()) # => ["john", "jeff"]
In Python 3 erhalten Sie dict_keys
eine Ansicht, die etwas effizienter ist ( Details finden Sie in den Ansichtsdokumenten und in PEP 3106 ).
print(myDict.keys()) # => dict_keys(['john', 'jeff'])
Wenn Sie mehr über Python-Wörterbuch-Interna erfahren möchten, empfehle ich diese ca. 25-minütige Videopräsentation: https://www.youtube.com/watch?v=C4Kc8xzcA68 . Es heißt "The Mighty Dictionary".
hash
Funktion zurückgegebene Wert nicht ändern sollte, solange das Objekt als verwendet wird Wörterbuchschlüssel. Wenn dies der Fall ist, sollten Sie darauf vorbereitet sein, dass Ihr Programm abstürzt oder sich auf bizarre Weise schlecht verhält.
Versuchen Sie noch besser ein OrderedDict Sie es (vorausgesetzt, Sie möchten so etwas wie eine Liste). Näher an einer Liste als an einem normalen Diktat, da die Schlüssel eine Reihenfolge haben, genau wie Listenelemente eine Reihenfolge haben. Bei einem regulären Diktat haben die Schlüssel eine beliebige Reihenfolge.
Beachten Sie, dass dies in Python 3 und 2.7 verfügbar ist. Wenn Sie eine frühere Version von Python verwenden möchten, finden Sie hierfür installierbare Module.