先看两个例子:
d={"name":""}
l=[]
for i in range(5):
d["name"]=i
l.append(d)
print (l)
运行后结果为:
[{'name': 4}, {'name': 4}, {'name': 4}, {'name': 4}, {'name': 4}]
d = {}
l = {}
for i in range(5):
d['name'] = i
l[str(i)]= d
print (l)
运行后结果为:
{'0': {'name': 4}, '1': {'name': 4}, '2': {'name': 4}, '3': {'name': 4}, '4': {'name': 4}}
发现与想要的数据不符,出现这种情况是python为了效率,几个变量指向同一块内存,改变一个值其他都改变,是浅拷贝造成的。
对于例1:
import copy
d={"name":""}
l=[]
for i in range(5):
d["name"]=i
l.append(d)
l = copy.deepcopy(l)
print (l)
对于例2:
import copy
d = {}
l = {}
for i in range(5):
d['name'] = i
l[str(i)]= d
l = copy.deepcopy(l)
print (l)