【问题标题】:Appending python dictionary to list将python字典附加到列表
【发布时间】:2016-03-19 06:37:04
【问题描述】:
我有一个文档列表和一个 dict 字典。
doc = []
somedict = {}
somedict['facets'] = "blue"
doc.append(somedict)
somedict['facets'] = "green"
doc.append(somedict)
我下达命令时的预期输出
print doc
预期输出:
[ {'facets':'blue'} , {'facets':'green'} ]
目前的输出:
[{'facets': 'green'}, {'facets': 'green'}]
【问题讨论】:
标签:
python
list
python-2.7
dictionary
【解决方案1】:
您添加了两次相同的字典。将对象添加到列表不会创建副本,您只需添加对同一对象的另一个引用。
您可以在更改密钥 (somedict = somedict.copy()) 或追加 (doc.append(somedict.copy())) 之前创建一个副本,但由于您只有一个密钥,我将创建一个 new 字典:
doc = []
somedict = {'facets': "blue"}
doc.append(somedict)
somedict = {'facets': "green"}
doc.append(dict)`
甚至
doc = [{'facets': "blue"}, {'facets': "green"}]
【解决方案2】:
正确的实现应该如下所示:
doc = []
dict = {}
dict['facets'] = "blue"
doc.append(dict)
dict = {} # Declare a new dict here
dict['facets'] = "green"
doc.append(dict)
在您的代码中,doc 的第二个附加添加与第一个附加相同的一个 dict 对象,这导致 doc 包含相同的 dict 对象两次。