Skip to main content
 首页 » 编程设计

python之如何将此字典列表转换为新字典

2025年05月04日10dflying

我想转换这个字典列表:

input_list = [ 
    {'a': 5,'b': 7}, 
    {'a': 3,'b': 4}, 
] 

为此:

result_dict = { 
    'a': [5, 3], 
    'b': [7, 4] 
} 

我不知何故无法做到这一点。

有人可以帮我吗?

请您参考如下方法:

vanilla Python 方法

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

在这里,我们遍历项目,并向 result 字典添加一个空列表,以防键尚未在字典中。无论是否已经有一个列表,我们都会将 v 附加到该列表。

使用defaultdict

我们可以通过使用 collections 中的 defaultdict 使其更优雅:

from collections import defaultdict 
 
result = defaultdict(list) 
for subdic in data: 
    for k, v in subdic.items(): 
        result[k].append(v) 

这里我们基本上对 setdefault 进行了抽象(并且我们也节省了构造无用空列表的时间)。如果输出应该是 dict(而不是 defaultdict),我们可以用以下方式结束函数:

result = dict(result) 

使用 Pandas

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

from pandas import DataFrame 
 
result = DataFrame(data).to_dict(orient='list')