私は、ネストされた辞書を反復処理し、第二子から値を取得するには、次のPythonコード持っている:私はIPythonまたは対話型のPythonインタプリタでこれをテストする場合Python2:TypeError例外辞書値を確認しながら
ret = some_dict
for item, val in ret.items():
for item2, val2 in val.items():
print val2['result']
を、コードは正常に動作し、辞書の各項目のval2 ['result']の値を出力します。私はPythonプログラムにコードブロックを使用する場合[「結果」] VAL2印刷しようとするときしかし、私は次のエラーを取得する:
TypeError: string indices must be integers, not str
私はjson.dumps(VAL2、インデント= 2)を印刷した場合、辞書が正しく形成されているのが分かります。
ValueError: dictionary update sequence element #0 has length 1; 2 is required
コードはで動作するので、私は、私はこの時点で間違ってやって完全にはよく分からない:スクリプトはまた、次のエラーで失敗して辞書にval2のキャストするのdict()を使用しようとすると、インタラクティブなインタプリタ。私はPython 2.7.6を使用していますが、ユースケースはSaltstack Pythonクライアントから返された辞書を反復しています。
私は 'some_dict'はあなたが思うものではないと推測しています。あなたのコードは '{'outer_key':{'inner_key':{'result':" foo "}}}'ならばあなたの辞書は '{'outer_key':{'inner_key':" foo "}}'。 –
some_dictを書いてください。 –
エラーが発生した行の前に "print val2"を挿入し、予期した内容があるかどうかを確認してください。 –