python循环将字典插入列表,前面字典值会被改变

循环将字典插入列表前面字典值会被改变,请大大们指点迷津,代码如下:


n = 2
i = 0
data =[]
mydict = {}
while n>0:
    mydict['a'] = n
    mydict['b'] = n
    data.append(mydict)
    n -= 1
    i += 1
    print(data)

得到的结果是:
[{'a': 2, 'b': 2}]
[{'a': 1, 'b': 1}, {'a': 1, 'b': 1}]

想要的结果是:
[{'a': 2, 'b': 2}]
[{'a': 2, 'b': 2}, {'a': 1, 'b': 1}]

每次循环之前重新让字典为空就好了

 
n = 2
i = 0
data =[]
mydict = {}
while n>0:
    mydict = {}
    mydict['a'] = n
    mydict['b'] = n
    data.append(mydict)
    n -= 1
    i += 1
    print(data)
 

img

使用copy库的deepcopy
代码如下
有帮助望采纳~

import copy
n = 2
i = 0
data = []
mydict = {}
while n > 0:
    mydict['a'] = n
    mydict['b'] = n
    data.append(copy.deepcopy(mydict))
    n -= 1
    i += 1
    print(data)

img