dict = {1:[1,1,1], 2:[2,2,2]}
mylist = []
print dict
for key, value in dict.iteritems():
mylist.append(value)
for item in mylist:
a = item[0]+ item[1]
item.append(a)
print dict
在操作之前打印dict的结果是
{1: [1, 1, 1], 2: [2, 2, 2]}
在iteritems之后执行此操作
{1: [1, 1, 1, 2], 2: [2, 2, 2, 4]}
为什么dict会被修改?
答案 0 :(得分:1)
您正在更改dict的值列表,而不是列表的副本
for key, value in dict.iteritems():
mylist.append(value)
id(mylist[0])
70976616
id(dict[1])
70976616
dict [1]和mylist [0]都引用相同的内存空间,因此只要它们引用它,内存空间的任何变化都会影响它们
dict[1]
[1, 1, 1, 2]
mylist[0]
[1, 1, 1, 2]
您可以使用复制,深层复制等来复制列表
或强>
dict = {1:[1,1,1], 2:[2,2,2]}
mylist = []
print dict
for key, value in dict.iteritems():
mylist.append(value)
for item in mylist:
a = item[0]+ item[1]
item=item+[a] # this first evaluates the RHS creates a new memory reference and assigns it to item
print dict