這個問題在這里已經有了答案: 意外反映在子串列中的串列更改串列 (17 個答案) 3 天前關閉。
在python中,我想用字典制作一個二維陣列。我確實有參考資料的知識,所以我明確地使用了.copy. 但是,當我列印出陣列時,不想更改的字典也會更改。我的代碼如下。
dicts = []
for j in range(3):
dicts.append([{0:0,1:0,2:0,3:0}.copy()].copy() * 3)
dicts[0][0][0] = 5
dicts[1][1][0] = 10
print(dicts)
輸出:
[[{0: 5, 1: 0}, {0: 5, 1: 0}], [{0: 0, 1: 10}, {0: 0, 1: 10}]]
有誰知道為什么會發生這種情況,無論如何要解決它?謝謝你。
uj5u.com熱心網友回復:
干凈地解決這種事情的方法是使用串列推導式:
dicts = [[{0:0,1:0,2:0,3:0} for i in range(3)] for j in range(3)]
dicts[0][0][0] = 5
dicts[1][1][0] = 10
print(dicts)
輸出:
[[{0: 5, 1: 0, 2: 0, 3: 0}, {0: 0, 1: 0, 2: 0, 3: 0}, {0: 0, 1: 0, 2: 0, 3: 0}], [{0: 0, 1: 0, 2: 0, 3: 0}, {0: 10, 1: 0, 2: 0, 3: 0}, {0: 0, 1: 0, 2: 0, 3: 0}], [{0: 0, 1: 0, 2: 0, 3: 0}, {0: 0, 1: 0, 2: 0, 3: 0}, {0: 0, 1: 0, 2: 0, 3: 0}]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/400154.html
上一篇:如何更改具有多個字典的JSON檔案中的多個鍵,這些字典使用Python合并了相同的鍵但不同的值
下一篇:隨機選擇串列
