dict update

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.
Antworten
KomplexKompliziert
User
Beiträge: 20
Registriert: Freitag 29. Juni 2012, 09:05

Hallo!
hätte da noch eine Frage...
Ich möchte folgendes haben: V= dict(N0=(0,0),N1=(1,2), N2=(2.5,1)). Die Namen sind meine Knoten in einem Gitter und die Werte geben die Positionen in diesem Gitter an. Ich muss V iterativ erstellen und scheitere nun an den Knotennamen. Folgendes habe ich getan

Code: Alles auswählen

x=linspace(-0,0.6,3)
y=linspace(-0,0.6,3)
X,Y=meshgrid(x,y)
ylim(0.1,1)
xlim(0.1,1)
plot(X,Y,'y')
plot(Y,X,'y')
show()
m=0
N=dict()
#Erzeuge Meshgrid als Graph
for i in range(0,len(x)):
    for j in range(0,len(y)):
        name='N'+str(m)
        N.update(name=(x[i],y[j]))
        m=m+1

Ich habe noch weitere Sachen ausprobiert, bekomme es aber einfach nicht hin. Hat jemand eine Idee?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

`dict.update` arbeitet auf Dictionaries, fuer den Komfort gibt es noch die Schluesselwort-Variante wie du sie benutzt, die aber genau wie bei anderen Funktionsaufrufen funktioniert: Du erstellst ein Dictionary mit dem Schluessel `name' und einem Key.

Was du eigentlich benutzen willst ist

Code: Alles auswählen

N[name] = (x[i], y[i])
Daneben willst du noch PEP 8 lesen und sinnvoll iterieren .. z.b. so

Code: Alles auswählen

import itertools
...
N = {}
c = itertools.count(0)
for x in xs:
    for i, y in itertools.izip(c, ys):
        N['N{0}'.format(i)] = x, y
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Ich würde an deiner Stelle die Namen gar nicht erst in einen String umwandeln, dass macht die Sache nur unnötig kompliziert. Von einem "N" vor dem Namen hast du keinen Vorteil, nur jede Menge Nachteile. Dann kommt noch hinzu, dass ein Dictionary hier die falsche Datensturktur ist. Wenn du n Elemente hast und diesen die Namen 0 bis n-1 gibst, dann möchtest du eine Liste verwenden.
Das Leben ist wie ein Tennisball.
Antworten