首页 > 解决方案 > Python 删除重复的字典

问题描述

我正在尝试找到一种从字典列表中删除重复项的方法。我不必测试整个对象内容,因为给定对象中的“名称”值足以识别重复(即重复名称 = 重复对象)。我目前的尝试是这样的;

newResultArray = []

    for i in range(0, len(resultArray)):
        for j in range(0, len(resultArray)):
            if(i != j):
                keyI = resultArray[i]['name']
                keyJ = resultArray[j]['name']
                if(keyI != keyJ):
                    newResultArray.append(resultArray[i])

,这是非常不正确的。感谢任何建议。谢谢你。

标签: python

解决方案


如果name是唯一的,您应该只使用字典来存储您的内部字典,并name作为键。然后你甚至不会有重复的问题,你可以在 O(1) 时间内从列表中删除。

由于我无法访问填充的代码resultArray,因此我将简单地展示如何在线性时间内将其转换为字典。尽管如果可能的话,最好的选择是首先使用字典而不是使用字典resultArray

new_dictionary = {}

for item in resultArray:
    new_dictionary[item['name']] = item

如果你最后必须有一个列表,那么你可以像这样转换回字典:

new_list = [v for k,v in new_dictionary.items()]

推荐阅读