Seite 1 von 1

Dictionary IndexError

Verfasst: Montag 19. Dezember 2011, 20:34
von morfius
Hallo Forumsgemeinde!

Ich arbeite im Zuge meines Mathematikstudiums mit dem Programm Sage und bin bei einer Aufgabenstellung auf folgendes Problem gestoßen (ich muss erwähnen, dass ich programmiertechnisch noch sehr wackelig auf den Beinen bin ...):

Ich habe ein befülltes Dictionary der Länge n und möchte an den ersten m Stellen weitere Werte hinzufügen. Also war meine Idee: array[n + m] = array[n], [array[n + m - 1] = array[n - 1] usw., am einfachsten mit einer Schleife. Habe ich meine Einträge so verschoben, füge ich durch die frei gewordenen ersten m Felder meine gewünschten Werte ein. Allerdings folgt dann sofort "IndexError: list assignment index out of range". Ich nehme stark an, dass "array[n + m]" das Problem erzeugt, da eben dieser Index noch nicht existiert. Liege ich richtig?

Ich hoffe, ich habe mein Problem einigermaßen verständlich geschildert und würde mich sehr über Hilfestellungen freuen.

Liebe Grüße
morfius

Re: Dictionary IndexError

Verfasst: Montag 19. Dezember 2011, 20:41
von nomnom
morfius hat geschrieben:Hallo Forumsgemeinde!

Ich arbeite im Zuge meines Mathematikstudiums mit dem Programm Sage und bin bei einer Aufgabenstellung auf folgendes Problem gestoßen (ich muss erwähnen, dass ich programmiertechnisch noch sehr wackelig auf den Beinen bin ...):

Ich habe ein befülltes Dictionary der Länge n und möchte an den ersten m Stellen weitere Werte hinzufügen. Also war meine Idee: array[n + m] = array[n], [array[n + m - 1] = array[n - 1] usw., am einfachsten mit einer Schleife. Habe ich meine Einträge so verschoben, füge ich durch die frei gewordenen ersten m Felder meine gewünschten Werte ein. Allerdings folgt dann sofort "IndexError: list assignment index out of range". Ich nehme stark an, dass "array[n + m]" das Problem erzeugt, da eben dieser Index noch nicht existiert. Liege ich richtig?

Ich hoffe, ich habe mein Problem einigermaßen verständlich geschildert und würde mich sehr über Hilfestellungen freuen.

Liebe Grüße
morfius
Du scheinst doch gar kein Dictionary, sondern eine Liste zu verwenden? Sonst würde es keinen IndexError werfen. Aber wenn du sowieso Zahlen als Schlüssel benutzt, dann kannst du meiner Meinung nach auch eine Liste nehmen. Dann musst du auch nicht lauter Zahlen „per Hand“ verschieben, sondern kannst list.insert(0, wert) benutzen. Arrays heißen bei Python übrigens Listen, außer du meinst wirklich Arrays aus dem array-Modul.

Re: Dictionary IndexError

Verfasst: Montag 19. Dezember 2011, 20:47
von jtk
der fehler kommt übrigens daher, dass man mit a=x nur bestehende elemente ändern kann, anhängen geht mit a.append(x)

aber du machst dir zu viel arbeit mit sachen, die es in python fertig gibt ;-)

Re: Dictionary IndexError

Verfasst: Montag 19. Dezember 2011, 21:24
von morfius
Danke, durch eure Denkanstöße bin auf das Problem gestoßen. :) Auch wenn nun alles funktioniert, werde ich es auf Listen umschreiben. Das macht alles viel unkomplizierter.

Liebe Grüße
morfius