为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中追加/合并

在Python中追加/合并

德玛西亚99 2021-03-13 11:08:36
我有以下结构:[  {    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"}      }    ]是否可以追加到列表中,以便以扁平的方式构建结构。或者循环结束后是否可以展平?
查看完整描述

3 回答

?
www说

TA贡献1775条经验 获得超8个赞

如果您的列表已命名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'}

    }

]


查看完整回答
反对 回复 2021-03-27
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

您当前所在的位置是这样的:

mylist.extend(newdict)

您应该使用此:

mylist[0].update(newdict)


查看完整回答
反对 回复 2021-03-27
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

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


def flatten(results):

    newresult = {}

    for subdict : results:

        newresult.update(subdict)

    return [newresult]


查看完整回答
反对 回复 2021-03-27
  • 3 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号