如何在Python中将字典拆分为字典列表?

3
我将尝试将一个包含多个字典的字典转换为列表。例如:
输入:
{
    'first-name':'foo',
    'last-name':'bar',
    'gender':'unknown',
    'age':99
}

输出:

[{'first-name': 'foo'}, {'last-name': 'bar'}, {'gender': 'unknown'}, {'age':99}]

我已经在使用这段代码来做这件事:



def convert(info: dict):
    new_list = list

    for item in info:
        new_parameter = {item:info[item]}
        new_list.append(new_parameter)

    return new_list

但是我想知道是否有内置函数可以做到这一点?或者有一个更易读的代码段吗?这段代码近10行!并且有点难以理解!

5个回答

6

使用列表推导式

  • items() 方法用于返回带有所有字典键及其值的列表。

例子:

dict1 = {
    'first-name':'foo',
    'last-name':'bar',
    'gender':'unknown',
    'age':99
}

new_list = [{k:v} for k,v in dict1.items() ]
print(new_list)

输出:

[{'first-name': 'foo'}, {'last-name': 'bar'}, {'gender': 'unknown'}, {'age': 99}]

@josoler提出的另一个解决方案:

new_list = list(map(dict, zip(dict1.items())))

1
为了完整起见,您也可以使用:list(map(dict, zip(dd.items())))。但这不是可读性最好的选择。 - josoler

1
Dict = {
    'first-name':'foo',
    'last-name':'bar',
    'gender':'unknown',
    'age':99
}
list = [(key, value) for key, value in Dict.items()]

list >> [('first-name':'foo'), ('last-name':'bar'), ('gender':'unknown'),('age':99)]

这是将字典转换为元组列表的最简单方法。
参考资料:Python | 将字典转换为元组列表

0
>>> d={
...     'first-name':'foo',
...     'last-name':'bar',
...     'gender':'unknown',
...     'age':99
... }
>>> [{k: v} for (k, v) in d.items()]
[{'first-name': 'foo'}, {'last-name': 'bar'}, {'gender': 'unknown'}, {'age': 99}]

为什么对这个投负票,它解决了问题并且没有错误,虽然他需要编辑代码。 - sahasrara62
1
@prashantrana这是因为它与bharatk的答案完全相同吗? - Selcuk
1
@Selcuk 对此无法发表意见,不知道意图,是的,这个解决方案类似于bharatk的回答。 - sahasrara62

0

另一种方法:

>>> [dict([i]) for i in d.items()]
[{'gender': 'unknown'}, {'age': 99}, {'first-name': 'foo'}, {'last-name': 'bar'}]

0
k={
    'first-name':'foo',
    'last-name':'bar',
    'gender':'unknown',
    'age':99
}

s =list(map(lambda x:{x[0]:x[1]},k.items() ))

输出

[{'first-name': 'foo'},
 {'last-name': 'bar'},
 {'gender': 'unknown'},
 {'age': 99}]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接