我有一份文件清单和一本字典。
doc = []
somedict = {}
somedict['facets'] = "blue"
doc.append(somedict)
somedict['facets'] = "green"
doc.append(somedict)
我发出命令时的预期输出
print doc
预期产出:
[ {'facets':'blue'} , {'facets':'green'} ]
现在输出:
[{'facets': 'green'}, {'facets': 'green'}]
答案 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对象。