我试图用两个键过滤掉我的词典列表。我的项目列表很多,我需要找到一种方法来过滤掉重复使用'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”的字典。正确的方法是什么?
答案 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)