合并字典列表中的键

时间:2017-05-16 19:42:17

标签: python dictionary

我有一个字典列表,其中包含任意数量的重复键。我想合并键和值的返回列表(即使键是不同的,如下例中的'c'和'd'):

input = [{'a': 2},
         {'b': 3},
         {'c': 1},
         {'a': 3},
         {'a': 5},
         {'d': 7},
         {'b': 4}]

期望的输出:

output = [{'a': [2,3,5]}, {'b': [3, 4]}, {'c': [1]}, {'d': [7]}]

我目前的方法有点乱,我只想找代码

1 个答案:

答案 0 :(得分:2)

defaultdict似乎是一个不错的选择:

from collections import defaultdict
output = defaultdict(list)
for d in input:
    for key in d.keys():
        output[key].append(d[key])
output = [{k: output[k]} for k in output]

(打印中间值以查看正在发生的事情)。

ps:您可能不应该为变量input命名,因为它会以相同的名称隐藏全局函数。