https://blog.csdn.net/weixin_42744102/article/details/90725391
今天写了大致这样一段代码
lista = [1,2,3]
dicta = [{"k1":[],"pref":1},{"k1":[],"pref":1},{"k1":[],"pref":1}]
for item in dicta:
print (item)
pref_value = item['pref']
item['k1']=lista
item["k1"].append(4)
print dicta
结果就会发现:
[{'k1': [1, 2, 3, 4, 4, 4], 'pref': 1}, {'k1': [1, 2, 3, 4, 4, 4], 'pref': 1}, {'k1': [1, 2, 3, 4, 4, 4], 'pref': 1}]
每个对象里面的4都被复制了3次。
实际上的原因就是:看起来, item["k1"]这个对象是在for循环中才被new出来的,但实际上 item['k1']=lista这句话的意思就是复制了一个指针(也就说,没有做copy)
将这句话改为 item['k1']=lista[:]后,问题解决