リストの中に多くの辞書があるリストはたくさんあります。私は単に、外側のリストのリストの1つに1つの辞書を割り当てます。しかし、外側のリストのすべてのリストのすべての辞書に割り当てられます。リスト内での辞書の割り当てが奇妙な結果になる
コード:出力
CL=3*[0]
DL=4*[0]
di= {
'A':[],
'B':[],
'C':CL,
'D':DL
}
R=[[],[]]
R[0].append(di)
R[1].append(di)
def func(dd):
dd[0][0]['A'].append("BANANA")
dd[0][0]['B'].append("ELEPHANT")
dd[0][0]['C'][0]='BLUE'
dd[0][0]['D'][3]='ROCK'
dd[0][0]['D'][2]=1111
print(R[0])
print(R[1])
print("\n")
func(R)
print(R[0])
print(R[1])
:私は外側のリストの最初のリストの中の辞書に値を割り当てられていても
[{'A': [], 'C': [0, 0, 0], 'B': [], 'D': [0, 0, 0, 0]}]
[{'A': [], 'C': [0, 0, 0], 'B': [], 'D': [0, 0, 0, 0]}]
[{'A': ['BANANA'], 'C': ['BLUE', 0, 0], 'B': ['ELEPHANT'], 'D': [0, 0, 1111, 'ROCK']}]
[{'A': ['BANANA'], 'C': ['BLUE', 0, 0], 'B': ['ELEPHANT'], 'D': [0, 0, 1111, 'ROCK']}]
あなたが見ることができるように、(funcが()に動作しますdd [0] ..のみ)、両方のリストが割り当てられました。
私のインデックスに間違いがありますか?なぜこれが起こるのですか?
R [0]、R:あなたのコードを修正する
。 http://lucumr.pocoo.org/2011/7/9/python-and-pola/#pass-by-what-exactly – TheoretiCAL
この記事は参考になりました:[Pythonの名前と値についての事実と神話]( http://nedbatchelder.com/text/names.html)、これはSOベテランのNed Batchelderによって書かれました。 –