【问题标题】: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 对象两次。

      【讨论】:

      • thnks 满意 :)
      猜你喜欢
      • 2020-10-14
      • 2023-02-02
      • 1970-01-01
      • 2019-11-07
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 2013-03-27
      • 2019-03-29
      相关资源
      最近更新 更多