从词典列表中删除重复的值

时间:2020-11-11 19:38:37

标签: python

我试图用两个键过滤掉我的词典列表。我的项目列表很多,我需要找到一种方法来过滤掉重复使用'id'和'updated_at'键的项目。

这是项目列表示例:

items = [{
        'id': 1,
        'updated_at': '11/11/2020T00:00:00',
        'title': 'Some title',
        'value': 'Some value',
        'replies': 1
    }, {
        'id': 1,
        'updated_at': '11/11/2020T00:00:00',
        'title': 'This is duplicate by id and updated',
        'value': 'This item should be removed',
        'replies': 1
    }, {
        'id': 1,
        'updated_at': '11/11/2020T17:00:10',
        'title': 'This is only duplicate by id',
        'value': 'Some value',
        'replies': 1
    }]

我想删除那些具有相同“ id”和“ updated_at”的字典。正确的方法是什么?

1 个答案:

答案 0 :(得分:3)

为什么不使用字典词典呢?

filtered_dict = {(d['id'], d['updated_at']): d for d in list_of_dicts}

由于您在问题中未提及任何偏好,因此很可能会使用最后一个重复项。

您可以使用特殊的哈希创建自己的dict对象,但这似乎更容易。如果您想返回列表,则只需输入filtered_dict.values()

如果偶然您只想要第一个匹配项,则必须添加几行代码。

existing_dicts = set()
filtered_list = []
for d in list_of_dicts:
    if (d['id'], d['updated_at']) not in existing_dicts:
        existing_dicts.add((d['id'], d['updated_at']))
        filtered_list.append(d)