如何结合dicts python列表

时间:2018-04-13 17:30:57

标签: python dictionary

我有像这样的词组列表:

vector<>

并希望创建一个新列表,如:

list_of_dict = [{},
                {'a': 2},
                {'a': 3},
                {'b': 2, 'c': 4}]

如果dicts没有键交叉或者相交键的值相同,则组合dicts。

我选择第一对,检查相交的键(如果交叉点则为值)然后删除该对并替换为新的dict。我应该什么时候停止?

new_list = [{'a': 2, 'b': 2, 'c':4},
            {'a': 3}]

2.7

的解决方案
list_of_dict = [{},
            {'a': 2},
            {'a': 3},
            {'b': 2, 'c': 4}]


keys_a = set(list_of_dict[0].keys())
keys_b = set(list_of_dict[1].keys())
intersection = keys_a & keys_b
while ??:
    if not intersection or //check intersected is equal//:
        list_of_dict[0].update(list_of_dict[1])
        list_of_dict.pop(1)
print list_of_dict

1 个答案:

答案 0 :(得分:3)

这是一个解决方案,检查缓冲区中是否存在当前字典中的任何键,如果是,则创建新的列表条目,否则它将当前字典与缓冲区合并:

dcts = []
buffer = {}
for i in list_of_dict:
    if any(j in buffer for j in i.keys()):
        dcts.append(buffer)
        buffer = i
    else:
        buffer = {**i, **buffer}

dcts.append(buffer)
print(dcts)

输出:

[{'a': 2}, {'b': 2, 'c': 4, 'a': 3}]