Seite 1 von 1

dict update

Verfasst: Dienstag 28. August 2012, 10:59
von KomplexKompliziert
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?

Re: dict update

Verfasst: Dienstag 28. August 2012, 11:57
von cofi
`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

Re: dict update

Verfasst: Dienstag 28. August 2012, 12:08
von EyDu
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.