Seite 1 von 1
TypeError: string indices must be integers
Verfasst: Dienstag 16. Dezember 2008, 13:37
von PNS-Richi
Hallo,
In folgenden Script kommt folgende Fehlermledung: TypeError: string indices must be integers
Was es bedeutet ist mir klar. Nur ich frage mich warum dieser Fehler auftritt.
Code: Alles auswählen
#! /usr/bin/env python
# -*- coding: utf-8 -*-
kat = {}
kat['test'] = {}
kat['test']['blub'] = []
kat['test']['blub'].append('test1')
kat['test']['blub'].append('test2')
kat['test']['blub'].append('test3')
# geht
print kat['test']['blub'][0]
# geht nicht
for kat1 in kat:
for test in kat1['blub']:
print test
Ich weiß es ist ein nutzloses Script, aber so kann ich den Fehler erneut verursachen.
lg Richi
Verfasst: Dienstag 16. Dezember 2008, 13:42
von BlackJack
In solchen fällen solltest Du einfach mal ein paar ``print``-Anweisungen einbauen. Dann würdest Du schnell feststellen, dass `kat1` an eine Zeichenkette gebunden wird. Und 'test'['blub'] geht eben nicht…
Verfasst: Dienstag 16. Dezember 2008, 14:00
von PNS-Richi
so klappt mal das erste, nur wie löse ich folgendes:
Im Grunde ist es eine komplexere Mischung aus Listen und Dictionaries.
Wieso wird nach
aus meinen Dictionaries eine Liste?
Verfasst: Dienstag 16. Dezember 2008, 14:34
von PNS-Richi
Hallo,
also folgendes Funktioniert nun so wie ich es will:
Code: Alles auswählen
#! /usr/bin/env python
# -*- coding: utf-8 -*-
kat = {}
kat['test'] = {}
kat['test']['blub'] = []
kat['test']['blub'].append('test1')
kat['test']['blub'].append('test2')
kat['test']['blub'].append('test3')
for test in kat.keys():
for text in kat[test]['blub']:
print text
hat etwas gedauert von anderen Sprachen in Pythonisch um zu denken

Verfasst: Dienstag 16. Dezember 2008, 15:32
von cofi
Weil dict.items() nunmal eine Liste zurückgibt.
Ich kenne zwar nicht dein Problem, aber ich glaube nicht, dass Stringliterale zu verwenden die richtige Lösung ist. Schau dir am besten mal die Dict-Methoden an. Auch kommt mir deine Datenstruktur etwas seltsam vor
Btw:
Code: Alles auswählen
In [1]: d = {}
In [2]: d["a"] = 1
In [3]: test = "a"
In [4]: d[test]
Out[4]: 1
Verfasst: Dienstag 16. Dezember 2008, 22:22
von Darii
PNS-Richi hat geschrieben:Code: Alles auswählen
for test in kat.keys():
for text in kat[test]['blub']:
print text
hat etwas gedauert von anderen Sprachen in Pythonisch um zu denken

Oder du nimmst einfach dict.itervalues.
Code: Alles auswählen
for kat1 in kat.itervalues():
for test in kat1['blub']:
print test