首页 > 解决方案 > 我想用字典检查相同键的列表,如果我有相同的键来合并字典

问题描述

我只想与键类型进行比较,如果键类型相同,我想合并具有相同键 ['TYPE] 的字典:

list_1 = [{'TYPE': ['general cargo'], 'YOB': [['2010', '2015']]}, {'TYPE': ['general cargo'], 'DWT': [[360000, 486000]]}, {'TYPE': ['barge'], 'DWT': [[3800, 6300], [4000, 5000]]}]

我想要这个结果:

[{'TYPE': ['general cargo'], 'YOB': [['2010', '2015']],'DWT': [[360000, 486000]]}, {'TYPE': ['barge'], 'DWT': [[3800, 6300], [4000, 5000]]}]

标签: pythonlistdictionarymerge

解决方案


尝试:

# list_1 = [{'TYPE': ['general cargo'], 'YOB': [['2010', '2015']]}, {'TYPE': ['general cargo'], 'DWT': [[360000, 486000]]}, {'TYPE': ['barge'], 'DWT': [[3800, 6300], [4000, 5000]]}]
list_1 = [{'TYPE': ['bc']}, {'TYPE': ['general cargo'], 'DWT': [[10000, 15000]]}, {'TYPE': ['general cargo']}, {'TYPE': ['general cargo'], 'COB': ['japan'], 'YOB': [['2010', '2015']]}] 
temp = []
for i in range(len(list_1)):
    if i!=0:
        if list_1[i]["TYPE"] == list_1[i-1]["TYPE"]:
            keys_to_add =list(list_1[i].keys())
            keys_to_add.remove("TYPE")
            for k in keys_to_add:
                temp[-1][k] = list_1[i][k]
        else:
            temp.append(list_1[i])
    else:
        temp.append(list_1[i])

print(temp)

>> [{'TYPE': ['bc']},
 {'TYPE': ['general cargo'],
  'DWT': [[10000, 15000]],
  'COB': ['japan'],
  'YOB': [['2010', '2015']]}]

    

推荐阅读