如何将这个dicts列表转换为新的dict

Thi*_*ork 1 python python-3.x

我想转换这个dicts列表:

input_list = [
    {'a': 5,'b': 7},
    {'a': 3,'b': 4},
]
Run Code Online (Sandbox Code Playgroud)

对此:

result_dict = {
    'a': [5, 3],
    'b': [7, 4]
}
Run Code Online (Sandbox Code Playgroud)

我莫名其妙地无法做到这一点.

请有人帮助我.

Wil*_*sem 6

一种香草 Python方法

result = {}
for subdic in data:
    for k, v in subdic.items():
        result.setdefault(k, []).append(v)
Run Code Online (Sandbox Code Playgroud)

在这里,我们遍历项目,我们在result字典中添加一个空列表,以防密钥尚未出现在字典中.无论是否已有列表,我们都会附加v到该列表中.

运用 defaultdict

我们可以使其更加优雅利用defaultdict来自collections:

from collections import defaultdict

result = defaultdict(list)
for subdic in data:
    for k, v in subdic.items():
        result[k].append(v)
Run Code Online (Sandbox Code Playgroud)

在这里,我们基本上做了抽象setdefault(我们还节省了构建无用的空列表).如果输出应该是dict(而不是a defaultdict),我们可以用以下结束函数:

result = dict(result)
Run Code Online (Sandbox Code Playgroud)

运用 pandas

如果每个字典包含相同的键,我们可以使用pandas:

from pandas import DataFrame

result = DataFrame(data).to_dict(orient='list')
Run Code Online (Sandbox Code Playgroud)