ここには2つの辞書X
とY
のコレクションである親辞書があります。 csvモジュールのDictReader
を使用してそれらを保存しました。1つの辞書オブジェクトに格納されている複数の順序付き辞書の項目を抽出します
2つの命令付き辞書を含むexample_dicto
辞書を呼び出します。明確にするために、スパイダーで変数エクスプローラから、これは次のようになります。
Name Type Size Value
example_dict dict 2 {'X':OrderedDict, 'Y': OrderedDict}
[OK]をので、私はX
とY
は、ここでの主キーを知っています。しかし、私はこれらの2つの辞書を通して価値観を見たいと思います。 X
とDuration (min)
にY
のDuration
という列があり、行に応じてこれらの列を読み込んで値を返す機能が欲しいとします。
def info_from_row(row, dictionary):
if dict == 'X':
duration = float(row['Duration'])
else:
duration = float(row['Duration (min)'])
return duration
私はinfo_from_row
を呼び出すと、Pythonはトレースバックは、これらの「キー」のいずれも存在しないことを私に言っている通常のKeyError例外を返します。 したがって、基本的に辞書のコレクションである辞書を索引付けしてから、それらの「メイン」キーXとY内の索引キーを使用して値を戻す必要があります。 dict['key']
メソッドでエラーが発生し、'Duration' in X
以外にもFalse
が返されるため、インデックスを作成するにはどうすればよいですか。
はより明確にするために、これらの辞書は、次のようになります。
print(example_dict)
{'X': OrderedDict([('ID', '123456'), ('Duration', '54941')]),
'Y': OrderedDict([('ID', '789101'), ('Duration (min)', '7869')])}
この関数をどのように呼びますか?あなたはそれにどのような議論をしていますか? –
私はこの関数を呼び出す文法にも疑問を抱いています。単純な 'info_from_row(5、 'X')'は私にそのエラーを与えています。これは 'X'の' Duration'カラムの5番目の値の値を返します。 –
'' example_dict ['X'] ['Duration'] ''は '' '54941'''を正しく返します。'' info_from_row(example_dict、 'X') ''を呼び出す場合、 '' row ['Duration'] ''は実際に '' exampld_dict ['Duration'] ''であり、実際には '' KeyError' '。 '' row [dict] ['Duration'] ''と '' row [dict] ['Duration(min)'] ''のようなものを使うべきです。 (また、変数 '' dict''を呼び出さないでください。これはPythonの組み込み関数です...)。 –