ループ中に辞書を変更すると実行時エラーが発生する可能性があることは認識していますが、それを行う適切な方法があることは知っており、どれが受け入れ可能でどれがそうでないかを理解できません。実行時エラーが発生する可能性があるため、それらをコンソールでテストしても役に立ちません。私はそれが正しいのか、それとも単に幸運なのかわかりません。
ステータスの辞書であるステータス属性があるとします。
self.status = {"overall": False, "started":False,
"ready":False, "awakeQueried":False,
"allQueried":False}
これらは、実行中にさまざまな True または False に変化します。失敗を処理する関数があり、それらすべてを False に設定したいと考えています。エレガントな方法は何ですか?これまでのところ、これは機能していますが、ある時点で実行時エラーが発生するかどうかはわかりません。
self.status = {key:False for key in self.status}
それをしてもいいですか?ここでは、低レベルの機能についてはわかりません。私は .items() などでコピーを作成していません。辞書を上書きしていますが、最初に右側を処理する必要がありますが、これは理解であるため、self.status を上書きする前に最初に理解全体を完了するかどうかはわかりません。新しいdictを理解してから設定している間、一種のコピーをメモリに保存しますか、それとも反復ごとにdictを理解してアイテムを設定することをループしますか(問題が発生すると思います)?