別のものを要約する辞書を作成しようとしています。 summary_dictは、キーがdetails_dictの「親」の値と一致する場合にのみ更新されるようにしたいと思います。私が書いたことは、私が期待するようにsummary_dictにアクセスしていないようです。 printステートメントは、summary_dictから適切な値を取得するのではなく、ループ内の最初のiterableに追加し続けることを示しています。Python辞書がループ内で予想通りに更新されない
detail_dict = {'a123': {"data": [1, 2, 3, 4], "parent": "a"},
'a124': {"data": [1, 2, 3, 4, 5], "parent": "a"},
'b123': {"data": [1, 2, 3], "parent": "b"},
'b124': {"data": [1], "parent": "b"}}
summary_dict = dict.fromkeys(["a", "b"], {"data": [],
"data_len": []})
for k, v in detail_dict.iteritems():
summary_dict[v['parent']]["data"].append(v["data"])
summary_dict[v['parent']]["data_len"].append(len(v["data"]))
print "\nMy value is "
print v
print "\nMy summary dictionary now looks like:"
print summary_dict[v['parent']]
私が望む結果の辞書です:
{"a": {"data": [[1, 2, 3, 4], [1, 2, 3, 4, 5]],
"data_len": [4, 5]},
"b": {"data": [[1, 2, 3], [1]],
"data_len": [3, 1]}}
感謝を!私は自分自身でその罠を解決したことはありませんでした。私はそれが私がループでそれを呼んでいた方法であると確信していたと思った – LoveMeow