Python dictionary: Weisen Sie den Wert als variable Schlüssel
Ich bin python-Anfänger und erstellt ein kurzes Wörterbuch, links Großbuchstaben als Schlüssel zum 1x3 Felder die jeweiligen Werte. So etwas ähnliches wie das hier:
dict = {'A': array([1, 2, 3]), 'B': array([2.1, 3.2, 4]), etc. }
Als Teil von meinem Programm muss ich weisen Sie die-Taste, um den Wert als eine Funktion. Aber statt zu schreiben:
A = array([1, 2, 3])
B = array([2.1, 3.2, 4])
etc.
Ich möchte finden, eine abstrakte, Allgemeine, einfacher code. So weit ich kommen konnte mit:
for i in dict:
i = dict[i]
Aber nicht ganz funktioniert und ich bin nicht sicher, warum. Sorry, dass ich nicht geben kann eine bessere Beschreibung der Fehler hier, aber ich habe keinen Zugriff auf meinen code im moment.
Jede Hilfe ist willkommen! Vielen Dank im Voraus!
Halten Sie Daten aus Ihrem Variablennamen. Warum nimmst du nicht einfach das Wörterbuch direkt? (Dein code funktioniert nicht, da weisen Sie auf den Namen
Die wichtigste Frage, die Sie haben (anders als Ihre Variablen-Namen) ist, dass Sie überschreiben
Mehr Abstraktion oft nicht, führen zu einfacherem code. Wenn Sie möchten, dass mehr generisch, warum willst du Variablen mit bestimmten Namen erstellt? Mit Ihrem Wörterbuch die Namen, um auf den Inhalt zugreifen, das ist generisches. BTW,
i
, nicht der name, der in der Zeichenkette verweist i
.)Die wichtigste Frage, die Sie haben (anders als Ihre Variablen-Namen) ist, dass Sie überschreiben
i
in jeder iteration. Versuchen Sie i = dict[i]
zu value = dict[i]
zu sehen, dass die Schleife sollte dann funktionieren.Mehr Abstraktion oft nicht, führen zu einfacherem code. Wenn Sie möchten, dass mehr generisch, warum willst du Variablen mit bestimmten Namen erstellt? Mit Ihrem Wörterbuch die Namen, um auf den Inhalt zugreifen, das ist generisches. BTW,
dict
ist der name Häufig verwendet, built-in Python-Datenstruktur, so möchten Sie vielleicht zu vermeiden, dass Namen in Ihrer eigenen code, um etwas anderes meinen.InformationsquelleAutor user3416092 | 2014-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
In deiner for-Schleife, du bist die Zuordnung der Tasten ("A", "B", etc.) die variable "i". Also, Sie sind richtig, dass Sie Zugriff auf die arrays mit dict[i]; allerdings ist es nicht wirklich sinnvoll zuordnen ich. Meine Vermutung ist, dass Sie etwas mehr wie A = dict[i] der ersten Zeit, und B = dict[i] der zweite, usw. Die Chancen sind Sie vielleicht nicht brauchen diese, wie das Wörterbuch gibt Ihnen eine schöne, Natürliche Weg, um den Zugriff auf diese arrays.
Das heißt, es gibt einen Weg, um zu bekommen, was Sie wollen. In der Schleife, können Sie etwas sagen wie:
Dies ist eine Art umständlich, obwohl, weil Namensräume in python sind dictionaries sowieso, also bist du einfach nur dein Wörterbuch und legt es in das Wörterbuch, vars() gibt Ihnen.
Als beiseite, es ist irgendwie chaotisch (aber immer noch gültig) zu nennen, Ihr Wörterbuch 'dict' seit dict ist der builtin name für die dictionary-Klasse. So können Sie dict(a=0, b=1, ...) um ein Wörterbuch zu erstellen, aber nicht, wenn Sie überschreiben, dass Namen eine lokale variable.
Naja, wie der Artikel sagt, es gibt subtile Grenzfälle, wo man Sie braucht diese Dynamik einheimischen() zugreifen. Aber hoffentlich nach sehen, wie es gemacht wird, die OP wird Zustimmen, dass gerade die Arbeit mit dem dict wird mehr Natürliche und klare Programmierung. Es ist nicht wirklich möglich, einen besseren Ansatz, da der OP nicht sagt, was Sie zu tun versuchen, mit diesen arrays.
Ich habe nicht nach unten Abstimmung Ihre Antwort, als Sie zeigen, nicht ein Weg, um die Variablen. Alles was ich Tat, war der Kommentar, dass ich dachte, es könnte besser sein-und wie es hätte sein können, einschließlich, sagen tun Sie es nicht. BTW, mit
vars()
wie, die innerhalb einer Funktion oder Methode kann nicht tun, was gewünscht ist.InformationsquelleAutor kristofor