繁体   English   中英

在Python中向字典添加值

[英]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_singlerect_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM