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

时间:2019-04-05 17:57:30

标签: 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)

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

反而我得到

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

我不太确定这是怎么回事,如果有人可以解释并帮助我获得理想的结果,那就太好了。

1 个答案:

答案 0 :(得分:3)

您将在每次迭代后附加对dict1的引用,但是每次也会更改键的值,以便在结束时具有对相同dict的引用列表(这就是为什么它们的原因)看起来都一样)。

简单的解决方法是将dict1 = {}移至for循环内。这样,您将创建一个具有自己的键值对的新字典,并将其添加到每次迭代中。