我想在字典的5x5矩阵中更改一个特定的值,下面是我的代码:
matrix = [[{"value": 1}]*5]*5
matrix[0][0]["value"] = 4
print(matrix) 它没有改变一个值,而是改变了所有的值:
[[{'value': 4}, {'value': 4}, {'value': 4}, {'value': 4}, {'value': 4}], [{'value': 4}, {'value': 4}, {'value': 4}, {'value': 4}, {'value': 4}], [{'value': 4}, {'value': 4}, {'value': 4}, {'value': 4}, {'value': 4}], [{'value': 4}, {'value': 4}, {'value': 4}, {'value': 4}, {'value': 4}], [{'value': 4}, {'value': 4}, {'value': 4}, {'value': 4}, {'value': 4}]]代码不应该只更改一个值,如下所示:
[[{'value': 4}, {'value': 1}, {'value': 1}, {'value': 1}, {'value': 1}], [{'value': 1}, {'value': 1}, {'value': 1}, {'value': 1}, {'value': 1}], [{'value': 1}, {'value': 1}, {'value': 1}, {'value': 1}, {'value': 1}], [{'value': 1}, {'value': 1}, {'value': 1}, {'value': 1}, {'value': 1}], [{'value': 1}, {'value': 1}, {'value': 1}, {'value': 1}, {'value': 1}]]要获得这个输出,我需要在代码中修改什么?
发布于 2018-10-06 21:23:57
以n为单位的列表乘积只重复其内容n次。所以,这个
[{"value": 1}]*5将创建一个新列表,其中包含对同一个dict {"value": 1}的5个引用。由于所有列表项都引用相同的对象,因此更新其中的任何项都会影响其他对象。
相反,使用列表理解来创建不同的对象:
matrix = [[{"value": 1} for _ in range(5)] for _ in range(5)]
matrix[0][0]["value"] = 4
print(matrix)https://stackoverflow.com/questions/52683430
复制相似问题