【问题标题】:I want to check in a list with dict for same keys and if i have same keys to merge the dict我想用字典检查相同键的列表,如果我有相同的键来合并字典
【发布时间】:2021-07-29 17:16:46
【问题描述】:

我只想与键类型进行比较,如果键类型相同,我想合并具有相同键的字典['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]]}]

【问题讨论】:

  • 如果你这样做,它会给你什么?
  • 什么意思?我想将以下列表转换为结果格式
  • 你尝试了什么?
  • 没什么我不知道怎么做的..可以告诉我方法吗?

标签: python list dictionary merge


【解决方案1】:

试试:

# 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']]}]

    

【讨论】:

  • 我的朋友我想看一个我有问题的案例。在这种情况下,以下代码不会播放: [{'TYPE': ['bc']}, {'TYPE': ['general cargo'], 'DWT': [[10000, 15000]]}, {'TYPE ': ['general cargo']}, {'TYPE': ['general cargo'], 'COB': ['japan'], 'YOB': [['2010', '2015']]}]
  • 可以告诉我路吗?
猜你喜欢
  • 2019-11-19
  • 2022-12-03
  • 1970-01-01
  • 1970-01-01
  • 2015-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多