Ich habe folgenden Python-Code ein verschachteltes Wörterbuch iterieren und einen Wert aus dem zweiten Kind greifen:Python2: Typeerror beim Überprüfen Wörterbuch Wertes
ret = some_dict
for item, val in ret.items():
for item2, val2 in val.items():
print val2['result']
Wenn ich dies zu testen in IPython oder dem interaktiven Python-Interpreter, Der Code funktioniert einwandfrei und gibt den Wert von val2 ['result'] für jedes Element im Wörterbuch aus. Allerdings, wenn ich diesen Code-Block in einem Python-Programm verwenden, erhalte ich die folgende Fehlermeldung, wenn val2 [ 'Ergebnis'] Versuch zu drucken:
TypeError: string indices must be integers, not str
Wenn ich json.dumps (val2 Spiegelstrich = 2) zu drucken, Ich kann sehen, dass das Wörterbuch richtig gebildet ist. Der Versuch, dict() zu verwenden, um ein Wörterbuch zu werfen val2 in dem Skript mit dem folgenden Fehler fehlschlägt auch:
ValueError: dictionary update sequence element #0 has length 1; 2 is required
Ich bin nicht ganz sicher, was ich an dieser Stelle falsch mache, da der Code funktioniert in der interaktive Dolmetscher. Ich benutze Python 2.7.6, und der Anwendungsfall ist das Iterieren über ein Wörterbuch, das vom Saltstack Python-Client zurückgegeben wird.
Ich vermute, dass 'some_dict' nicht das ist, was Sie denken, dass es ist. Ihr Code würde funktionieren, wenn er '{'outer_key': {'inner_key': {'result':" foo "}}}' wäre, aber Ihr Wörterbuch scheint nur '{'outer_key': {'inner_key':" foo "}}". –
Setzen Sie das some_dict auf. –
Fügen Sie einfach einen "print val2" vor der Zeile ein, die den Fehler erzeugt, um zu sehen, ob Sie den erwarteten Inhalt haben. –