通过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)
我的期望是我的输出是
[{'name':'x', 'values':1},{'name':'y', 'values':2},{'name':'z', 'values':3}]
,
反而我得到
[{'name':'z', 'values':3},{'name':'z', 'values':3},{'name':'z', 'values':3}]
。
我不太确定这是怎么回事,如果有人可以解释并帮助我获得理想的结果,那就太好了。
答案 0 :(得分:3)
您将在每次迭代后附加对dict1
的引用,但是每次也会更改键的值,以便在结束时具有对相同dict的引用列表(这就是为什么它们的原因)看起来都一样)。
简单的解决方法是将dict1 = {}
移至for循环内。这样,您将创建一个具有自己的键值对的新字典,并将其添加到每次迭代中。