[英]Adding values to dictionary in Python
下面的代码:
rect_pos = {}
rect_pos_single = [[0,0], [50, 0], [50, 100], [0, 100]]
i = 0
while (i<3):
for j in range(4):
rect_pos_single[j][0] += 50
print rect_pos_single
rect_pos[i] = rect_pos_single
i += 1
print rect_pos
该代码将打印变量“ rect_pos_single”的后续迭代。 接下来,我将它们添加到字典“ rect_pos”中。 键更改,但值始终相同-最后一次迭代。 我不理解为什么?
这条线
rect_pos_single[j][0] += 50
就地修改列表; 也就是说, rect_pos_single
始终引用相同的列表对象,但是您更改了该列表的内容。
这条线
rect_pos[i] = rect_pos_single
rect_pos_single
引用的列表的引用rect_pos_single
给rect_pos[i]
。 rect_pos
每个元素rect_pos
引用相同的列表。
最简单的更改是使用以下命令将列表的副本分配给字典
rect_pos[i] = copy.deepcopy(rect_pos_single) # Make sure you import the copy module
需要一个深层副本,因为rect_pos_single
是列表列表,而使用rect_pos_single
进行浅层副本将仅创建一个新列表,并引用实际使用rect_pos_single[j][0] += 50
修改过的相同列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.