【发布时间】:2022-11-16 07:50:54
【问题描述】:
我有一个矩阵(二维列表)在包含"val": False的整个范围内填充了字典类型的变量
问题是当我只想更改矩阵中的一项并将该特定项的值更改为 True 时。
这部分代码:matrix[3][2]["val"] = True 以某种方式导致整个矩阵更新“val”值并将所有 False 值更改为 True。
这是我的代码:
defval = {
"val": False
}
matrix = []
for x in range(5):
row = []
for i in range(5):
row.append(defval)
matrix.append(row)
matrix[3][2]["val"] = True
【问题讨论】:
-
您将
defval附加到矩阵的所有条目中。因此,内存中只有一个字典被所有条目引用。当您更新字典时,所有条目都会“更新”,因为它们都引用同一个字典。试试row.append({"val": False})(我会发布更详细的答案)
标签: python list dictionary