这是一个在Python中创建字典列表的简单代码,但是循环中的append函数是创建列表而不是字典列表。
如何将字典附加到列表中?
data = []
d = { "item1": None,
"item2": None
}
for i in range(3):
d["item1"] = i+1
d["item2"] = i+2
data.append(d)
print "data = ", data
我正在寻找的输出是
d = [
{
"item1": 1,
"item2": 2
},
{
"item1": 2,
"item2": 3
},
{
"item1": 3,
"item2": 4
}
]
答案 0 :(得分:1)
您只是将d
的引用添加到data
列表中,但d
引用永远不会更改,因此当您更改d
的值时在下一次迭代中,以前在列表中添加的词典也会发生变化。
尝试 -
data = []
for i in range(3):
d = {}
d["item1"] = i+1
d["item2"] = i+2
data.append(d)
print "data = ", data
答案 1 :(得分:1)
您可以简单地添加新词典:
for i in range(3):
data.append({"item1": i+1, "item2": i+2})
或者,更好的是,使用列表理解:
data = [{"item1": i+1, "item2": i+2} for i in range(3)]