Python中的追加/合并

Python中的追加/合并,python,Python,我的结构如下: [ { u'123456': {'name': "Bill"}, u'234567': {'name': "Dave"}, u'345678': {'name': "Tom"} }, ] [ { u'123456': {'name': "Bill"}, u'234567': {'name': "Dave"}, u'345678': {'name': "Tom"}

我的结构如下:

[
  {
    u'123456': {'name': "Bill"}, 
    u'234567': {'name': "Dave"},
    u'345678': {'name': "Tom"}
  },
]
    [
      {
        u'123456': {'name': "Bill"}, 
        u'234567': {'name': "Dave"},
        u'345678': {'name': "Tom"}
      },
      {
        u'555555': {'name': "Steve"}, 
        u'666666': {'name': "Michael"},
        u'777777': {'name': "George"}
      }
    ]
在for循环期间,使用extend函数将新项目添加到列表中。不幸的是,这导致了以下结构:

[
  {
    u'123456': {'name': "Bill"}, 
    u'234567': {'name': "Dave"},
    u'345678': {'name': "Tom"}
  },
]
    [
      {
        u'123456': {'name': "Bill"}, 
        u'234567': {'name': "Dave"},
        u'345678': {'name': "Tom"}
      },
      {
        u'555555': {'name': "Steve"}, 
        u'666666': {'name': "Michael"},
        u'777777': {'name': "George"}
      }
    ]
预期结果实际上是一个平面结构,如下所示:

    [
      {
        u'123456': {'name': "Bill"}, 
        u'234567': {'name': "Dave"},
        u'345678': {'name': "Tom"},
        u'555555': {'name': "Steve"}, 
        u'666666': {'name': "Michael"},
        u'777777': {'name': "George"}
      }
    ]
是否可以附加到列表中,以便以平面方式构建结构


循环完成后是否可以展平?

如果列表名为
l
,则可以使用
l[0]。更新(新目录)
。 例如:

格式良好的输出是:

[
    {
       u'123456': {'name': 'Bill'}, 
       u'234567': {'name': 'Dave'}
    }
]

您当前拥有的内容如下:

mylist.extend(newdict)
您应该使用以下选项:

mylist[0].update(newdict)

您可以将两个词典的项添加到一起:

>>> mylist = [
  {
    u'123456': {'name': "Bill"}, 
    u'234567': {'name': "Dave"},
    u'345678': {'name': "Tom"}
  },
]
>>> mydict = {
  u'555555': {'name': "Steve"}, 
  u'666666': {'name': "Michael"},
  u'777777': {'name': "George"}
}
>>> [dict(mylist[0].items() + mydict.items())]
[{u'123456': {'name': 'Bill'}, u'555555': {'name': 'Steve'}, u'777777': {'name': 'George'}, u'666666': {'name': 'Michael'}, u'345678': {'name': 'Tom'}, u'234567': {'name': 'Dave'}}]

尽管只做
.update()
更干净:

您可以使用,但是如果您有重复的键,这将覆盖值

def flatten(results):
    newresult = {}
    for subdict : results:
        newresult.update(subdict)
    return [newresult]

是的,这两者都是可能的,因为列表和dict都是可变的。为什么在列表中有这个,而不仅仅是dict。如果您总是更新dict,并且它是列表中唯一的元素,那么将它放入列表中是没有意义的。因为我想在它生成后按列排序。仅凭口述就能做到这一点吗?(我对python非常陌生)这是一种相当迂回的方法-
dict.update
在适当的位置执行它。@RichieHindle是的,我正要添加这个