Dictionary IndexError

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
morfius
User
Beiträge: 2
Registriert: Montag 19. Dezember 2011, 20:21

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
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

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.
jtk
User
Beiträge: 37
Registriert: Montag 19. November 2007, 17:16

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 ;-)
morfius
User
Beiträge: 2
Registriert: Montag 19. Dezember 2011, 20:21

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
Antworten