在Python中追加/合并

我有以下结构:


[

  {

    u'123456': {'name': "Bill"}, 

    u'234567': {'name': "Dave"},

    u'345678': {'name': "Tom"}

  },

]

在for循环期间,使用扩展功能将新项目添加到列表中。不幸的是,这导致以下结构:


    [

      {

        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"}

      }

    ]

是否可以追加到列表中,以便以扁平的方式构建结构。


或者


循环结束后是否可以展平?


德玛西亚99
浏览 195回答 3
3回答

www说

如果您的列表已命名l,则可以使用l[0].update(new_dict)。例子:l = [{u'123456': {'name': "Bill"}}]l[0].update({u'234567': {'name': "Dave"}})print(l)好的格式化输出是:[    {       u'123456': {'name': 'Bill'},        u'234567': {'name': 'Dave'}    }]

蝴蝶不菲

您当前所在的位置是这样的:mylist.extend(newdict)您应该使用此:mylist[0].update(newdict)

子衿沉夜

您可以使用.update(),但是如果您有重复的键,这将覆盖值。def flatten(results):    newresult = {}    for subdict : results:        newresult.update(subdict)    return [newresult]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python