📜  Python - 在字典列表中连接具有相同键的值

📅  最后修改于: 2022-05-13 01:55:22.796000             🧑  作者: Mango

Python - 在字典列表中连接具有相同键的值

有时,在使用Python字典时,我们可能会遇到一个问题,即我们需要执行所有键值列表的连接,就像在字典列表中一样。这是一个相当普遍的问题,在日常编程和 Web 开发领域等领域都有应用。让我们讨论可以执行此任务的某些方式。

方法一:使用循环

可以使用蛮力方式执行此任务。在此我们迭代所有字典并通过在键匹配上将一个列表元素添加到另一个列表元素来执行相似键的连接。

Python3
# Python3 code to demonstrate working of
# Concatenate Similar Key values
# Using loop
 
# initializing list
test_list = [{'gfg': [1, 5, 6, 7], 'good': [9, 6, 2, 10],
              'CS': [4, 5, 6]},
             {'gfg': [5, 6, 7, 8], 'CS': [5, 7, 10]},
             {'gfg': [7, 5], 'best': [5, 7]}]
 
# printing original list
print("The original list is : " + str(test_list))
 
# Concatenate Similar Key values
# Using loop
res = dict()
for dict in test_list:
    for list in dict:
        if list in res:
            res[list] += (dict[list])
        else:
            res[list] = dict[list]
 
# printing result
print("The concatenated dictionary : " + str(res))


Python3
from collections import defaultdict
test_list = [{'gfg' : [1, 5, 6, 7], 'good' : [9, 6, 2, 10],
              'CS' : [4, 5, 6]},
             {'gfg' : [5, 6, 7, 8], 'CS' : [5, 7, 10]},
             {'gfg' : [7, 5], 'best' : [5, 7]}]
 
print("Original List: " + str(test_list))
result = defaultdict(list)
 
for i in range(len(test_list)):
    current = test_list[i]
    for key, value in current.items():
        for j in range(len(value)):
            result[key].append(value[j])
 
print("Concatenated Dictionary: " + str(dict(result)))


输出
The original list is : [{'gfg': [1, 5, 6, 7], 'good': [9, 6, 2, 10], 'CS': [4, 5, 6]}, {'gfg': [5, 6, 7, 8], 'CS': [5, 7, 10]}, {'gfg': [7, 5], 'best': [5, 7]}]
The concatenated dictionary : {'gfg': [1, 5, 6, 7, 5, 6, 7, 8, 7, 5], 'good': [9, 6, 2, 10], 'CS': [4, 5, 6, 5, 7, 10], 'best': [5, 7]}

方法2:使用defaultdict

Python3

from collections import defaultdict
test_list = [{'gfg' : [1, 5, 6, 7], 'good' : [9, 6, 2, 10],
              'CS' : [4, 5, 6]},
             {'gfg' : [5, 6, 7, 8], 'CS' : [5, 7, 10]},
             {'gfg' : [7, 5], 'best' : [5, 7]}]
 
print("Original List: " + str(test_list))
result = defaultdict(list)
 
for i in range(len(test_list)):
    current = test_list[i]
    for key, value in current.items():
        for j in range(len(value)):
            result[key].append(value[j])
 
print("Concatenated Dictionary: " + str(dict(result)))
输出
Original List: [{'gfg': [1, 5, 6, 7], 'good': [9, 6, 2, 10], 'CS': [4, 5, 6]}, {'gfg': [5, 6, 7, 8], 'CS': [5, 7, 10]}, {'gfg': [7, 5], 'best': [5, 7]}]
Concatenated Dictionary: {'gfg': [1, 5, 6, 7, 5, 6, 7, 8, 7, 5], 'good': [9, 6, 2, 10], 'CS': [4, 5, 6, 5, 7, 10], 'best': [5, 7]}