python - 更改字典矩阵中的特定值

标签 python

我想更改 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}]]

我必须在代码中更改哪些内容才能获得此输出?

最佳答案

Multiplying n 的列表只是重复其内容 n 次。因此,这个

[{"value": 1}]*5

将创建一个新列表,其中包含对同一字典的 5 个引用{"value": 1}。由于所有列表项都引用同一对象,因此更新其中任何一项都会影响其他项。

相反,使用列表推导式来创建不同的对象:

matrix = [[{"value": 1} for _ in range(5)] for _ in range(5)]
matrix[0][0]["value"] = 4
print(matrix)

关于python - 更改字典矩阵中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52683430/

相关文章:

python - 连接到服务器的客户端IP

python - 将 TextBlob 情感分析结果拆分为两个单独的列 - Python Pandas

python - 当我在 tkinter 中使用条目时,我得到空字符串

python - 如何使用预训练的模型权重初始化新的 word2vec 模型?

python - 使用内部类输入类型调用 AWS lambda 函数

python - 如何交换 pandas 数据透视表中的列标题?

python - DeleteView 有 2 个争论帖子和用户

python - 如何避免重复创建对象

python - 如何使用 pythons 内置的 map 和 reduce 函数计算字符串中的字母频率

Python:列表和 numpy 对象数组之间的区别