仅将字典的最新值添加到列表中

S C*_*S C 3 python dictionary

通过 for 循环创建字典列表

我一直在尝试通过 for 循环创建字典列表,代码如下所示

a=["x","y","z"]
b=[1,2,3]
dict1={}
superlist=[]
for i in range(0,len(a)):
    dict1['name']=a[i]
    dict1['values']=b[i]
    superlist.append(dict1)
Run Code Online (Sandbox Code Playgroud)

我期望的输出是 [{'name':'x', 'values':1},{'name':'y', 'values':2},{'name':'z', 'values':3}]

相反,我得到

[{'name':'z', 'values':3},{'name':'z', 'values':3},{'name':'z', 'values':3}].

我不太确定这里发生了什么,如果有人能解释并帮助我得到我想要的结果,那就太好了。

ben*_*nvc 5

dict1在每次迭代中附加一个引用,但每次也更改键的值,以便在结束时您有一个对同一字典的引用列表(这就是它们看起来都一样的原因)。

简单的解决方法是dict1 = {}在你的 for 循环中移动。这样你就创建了一个新的字典,它有自己的键值对,要附加到每次迭代中。