【问题标题】:Convert nested dicts to list in python?将嵌套的字典转换为python中的列表?
【发布时间】:2016-04-26 09:35:01
【问题描述】:

在 python 中,我有一个dict,如下所示:

{'name':{0:'tom',1:'dav'}, 'age':{0:22,1:23}}

我想改成这样:

[{'name':'tom','age':22}, {'name':'dav','age':23}]

你能用最简单的方法回答吗?

【问题讨论】:

    标签: python dictionary nested


    【解决方案1】:

    这样的事情怎么样?

    >>> d = {'name':{0:'tom',1:'dav'}, 'age':{0:22,1:23}}
    >>> values = zip(*[value.values() for value in d.values()])
    >>> l = [{'name': name, 'age': age} for name, age in values]
    >>> l
    [{'name': 'tom', 'age': 22}, {'name': 'dav', 'age': 23}]
    

    [value.values() for value in d.values()] return [['tom', 'dav'], [22, 23]] 这是你的 subdicts 的值,然后,zip() return [('tom', 22), ('dav', 23)]

    然后,我们对压缩后的值使用for 循环,并将值放入l 中的字典中。

    【讨论】:

      【解决方案2】:

      一行中的另一种变体:

      a = {'name':{0:'tom',1:'dav'}, 'age':{0:22,1:23}}
      [ dict(zip(*(a.keys(),y))) for y in zip(*(x.values() for x in a.values())) ]
      

      【讨论】:

        【解决方案3】:

        还有一个在一行中;)

        age,name = {'name':{0:'tom',1:'dav'}, 'age':{0:22,1:23}}.values()
        print [{'name': name[inx],'age':age[inx]} for inx in age]
        [{'age': 22, 'name': 'tom'}, {'age': 23, 'name': 'dav'}]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-11
          • 2022-12-05
          • 2020-05-16
          • 2021-09-25
          • 1970-01-01
          • 2017-01-20
          • 2022-11-04
          • 1970-01-01
          相关资源
          最近更新 更多