我想转换这个字典列表:
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')
