将python字典附加到列表中

时间:2016-03-19 06:37:04

标签: python list python-2.7 dictionary

我有一份文件清单和一本字典。

doc = []
somedict = {}

somedict['facets'] = "blue"
doc.append(somedict)
somedict['facets'] = "green"
doc.append(somedict)

我发出命令时的预期输出

print doc

预期产出:

[ {'facets':'blue'} , {'facets':'green'} ]

现在输出:

[{'facets': 'green'}, {'facets': 'green'}]

2 个答案:

答案 0 :(得分:1)

您要添加相同字典两次。将对象添加到列表不会创建副本,只需添加对同一对象的另一个引用。

您可以在更改密钥(somedict = somedict.copy())或附加(doc.append(somedict.copy()))之前创建副本,但由于您只有一个密钥我会创建 new <改为/ em>字典:

doc = []

somedict = {'facets': "blue"}
doc.append(somedict)
somedict = {'facets': "green"}
doc.append(dict)`

甚至

doc = [{'facets': "blue"}, {'facets': "green"}]

答案 1 :(得分:0)

正确的实施应如下所示:

doc = []
dict = {}

dict['facets'] = "blue"
doc.append(dict)

dict = {} # Declare a new dict here
dict['facets'] = "green"
doc.append(dict)

在你的代码中,doc的第二个附加添加了与第一个附加相同的一个dict对象,这导致doc包含两次相同的dict对象。