これはもっと興味深い質問です。 私はPythonリファレンス、ネストされたdictsと 'del'は予期しない動作を引き起こします
ph = {1:0, 2:0}
d1 = {'a':ph, 'b':ph}
d2 = {'a':{1:0,2:0},{'b':{1:0,2:0}}
>>> d1
{'a':{1:0,2:0},{'b':{1:0,2:0}}
ので、D1およびD2(のpython 2.7.3 &でのpython 3.4.1を試してみました)、次の行動を観察し、これがなぜ起こるか/どのように知っていただきたいと思いは同じです。デルを使用するか、値を交換する際 しかし、これは予想通りD2ための動作である
>>> del d1['a'][1]
>>> d1
{'a':{2:0}, 'b':{2:0}}
>>> del d2['a'][1]
>>> d2
{'a':{2:0},{'b':{1:0,2:0}}
起こるが、D1(PH)にネストされた辞書は異なる動作をするように見えます。 これはPythonのすべての変数が実際に参照されるためですか? インスタンスごとにプレースホルダ辞書を指定できない場合は対処法がありますか?
ありがとうございました!あなたはd1
から削除すると
'd ['a']は最初の辞書のd ['b']'です。両方のキーに同じ辞書オブジェクトがあります。これは2番目のケースではそうではありません。 –