将字典列表合并为一个字典

时间:2020-10-30 20:37:26

标签: python dictionary

我有这个问题要解决。我尝试了很多方法。但是无法用最少的代码找出有效的方法。

my_list = [{'qwerty': 'hello'},
           {'asdfg': 'watermelon'},
           {'asdfg': 'banana'}]

merge_list_of_dicts(my_list)

returns the below list.

[{'qwerty': ['hello']},
 {'asdfg': ['watermelon','banana']}]

3 个答案:

答案 0 :(得分:1)

首先创建一个列表字典,然后附加原始数据中的值。

您想要一个字典列表而不是一个字典似乎很奇怪,所以我提供了两者。

尝试以下代码:

{'qwerty': ['hello'], 'asdfg': ['watermelon', 'banana']}

[{'qwerty': ['hello']}, {'asdfg': ['watermelon', 'banana']}]

输出

{{1}}

答案 1 :(得分:0)

您没有告诉我们merge_list_of_dicts()内部的内容,但是实现此目的的一种方法是:

from collections import defaultdict

my_list = [{'qwerty': 'hello'},
           {'asdfg': 'watermelon'},
           {'asdfg': 'banana'}]


def merge_list_of_dicts(list_of_dicts: list) -> list:
    merged = defaultdict(list)
    for d in list_of_dicts:
        for key, value in d.items():
            merged[key].append(value)
    return [{k: v} for k, v in merged.items()]


print(merge_list_of_dicts(my_list))

输出:

[{'qwerty': ['hello']}, {'asdfg': ['watermelon', 'banana']}]

答案 2 :(得分:-1)

如果您向我们展示您实现的功能会更好。一种简单的方法是遍历列表,然后遍历每个字典,然后将每个dict值:key添加到主字典中。

mylist = [{"fruit" : "apple"}, {"drink" : "apple juice"}, {"meals" : ["apple pies", "apple salad"]}]
newdict = {}
for dictionary in mylist:
    for key in dictionary:
        newdict[key] = dictionary[key]

print(newdict)