Wie speichert ein array in ein dictionary auf Basis von python
Ich bin derzeit versuchen zu ändern, eine Reihe von Programmen, die durch die Nutzung der Wörterbücher im Gegensatz zu arrays. Ich habe Spalten von raw-Informationen in eine Datei, das Lesen Sie dann in einer ASCII-csv-Datei. Ich brauche zum konvertieren dieser Datei in ein Wörterbuch, so dass es sein kann, zugeführt und in ein anderes Programm.
Habe ich eine numpy.genfromtxt zu ziehen, die Informationen, die ich brauche aus der csv-Datei wird im folgenden format:
a,b,c,d = np.genfromtxt("file",delimiter = ',', unpack = true)
dieser Schritt funktioniert völlig in Ordnung.
Ich dann versuchen, erstellen Sie ein Wörterbuch:
ouputDict = dict([a,a],[b,b],[c,c],[d,d])
Wie ich es verstehe, dies sollte den Taste "a" in dem Wörterbuch entsprechen, die array "a".
also wenn:
a = [1,2,3,4]
dann:
outputDict[a][0] = 1
Jedoch, wenn ich versuche zu erstellen das Wörterbuch, das ich die folgende Fehlermeldung:
TypeError: unhashable type: 'numpy.ndarray'
Warum kann ich nicht konstruieren Sie ein array auf diese Art und was ist die Abhilfe, wenn überhaupt? Jede Hilfe wird sehr geschätzt!
- versuchen zu bauen ein dict, dass die Karten ein array dasselbe array wenig Sinn macht. Ich denke, man kann haben, zu überdenken, welche Eingänge das andere Programm benötigt. Es scheint, dass eine Liste von arrays kann mehr Sinn machen.
- ich verstehe, dass Sie können nicht anzeigen ein array zu sich selbst, und ich entschuldige mich für eventuelle Verwirrung. ich habe versucht, die Tasten haben die gleichen Namen wie die Felder der Einfachheit halber
- Haben Sie versucht:
{'a':a, 'b':b,...}
oderdict(a=a, b=b,...)
?dict([('a', a), ('b', b)])
sollte auch funktionieren. - Ich Stimme mit dem, was cel sagte, versucht zu implementieren Wörterbuch (ist nicht notwendig), wo das problem gelöst werden kann mit einem array ist nicht ein guter Weg, um code.
- Das problem ist jetzt er versucht, einen numpy-array als Schlüssel irgendwann und das wird nicht funktionieren, weil python nicht zulässt, dass mutable Objekte als key in einem dict. Das ist, wo die unhashable Ausnahme kommt
- leider habe ich nicht wirklich die Wahl haben in die Verwendung von Wörterbüchern. mein original code hast, nutzen eine Liste von arrays. Ich bin gefordert wird, extern zu überarbeiten, diese Eingänge. auch Dank hpjaul, das hat es zu beheben. details... jedes mal
- vielen Dank auch an Tgsmith für die Erklärung, wo die unhashable ist comnig aus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kopiert aus meinem Kommentar:
Korrigieren Wörterbuch-Formate:
Ziel ist es, das die Zeichen 'a','b',etc. der Schlüssel, nicht die Werte der Variablen.
Können Sie dies auch tun, mit Sammlungen
Erklären Sie Ihr Wörterbuch als:
Dictionary = {}; //{} makes it a key, value pair dictionary
fügen Sie Ihren Wert für die, die Sie wollen, dass ein array als Schlüssel, indem er erklärt
Dictionary[a] = [1,2,3,4]; //[] makes it an array
So, jetzt Ihr Wörterbuch Aussehen wird
{a: [1,2,3,4]}
Was bedeutet, dass für den Schlüssel ein, Sie haben ein array und fügen Sie Daten, die Sie zugreifen können, wie Wörterbuch[a][0], die den Wert 1 und so weiter. 🙂
Btw.. Wenn man sich in die Beispiele ein dictionary, array-und Schlüssel-Wert-Paare, verschachtelten dictionary, Ihr Konzept wird klarer.