を作るために、この機能を使用する場合、これはなぜ起こったか、私は思っていました外側の辞書のysはと同じの内部辞書です。最初にdict.fromkeys(y,0)
の辞書を作成し、その辞書にすべてのキーを関連付けます。dict.fromkeys(x,...)
。これは全く同じに見えますが、そうではありません
zx = {k: dict.fromkeys(y,0) for k in x}
:ここで、我々はためx
内のすべてのk
はdict.fromkeys(y,0)
を評価し、必要な辞書を構築する
方法は、例えば辞書理解です再び。結果として、構築された辞書は全て相当のですが、ではなくと同じオブジェクトになります。
今、私たちは期待を取得:あなたは*同じ*値ですべてのキーを関連付けられているため
>>> x=[1,2,3,4,5]
>>> y=[7,8,9,10,11]
>>> zx = {k: dict.fromkeys(y,0) for k in x}
>>> zx
{1: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}, 2: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}, 3: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}, 4: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}, 5: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}}
>>> zx[1][8]+=1
>>> zx
{1: {8: 1, 9: 0, 10: 0, 11: 0, 7: 0}, 2: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}, 3: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}, 4: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}, 5: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}}
。 –