首页 > 解决方案 > 如果第一个键的值匹配,则从字典列表中删除这两个项目

问题描述

details = [
{"id": "1", "name": "Bob", "age": 21, "student" : "yes"},
{"id": "1", "name": "Mary", "age": 25, "student" : "yes"},
{"id": "2", "name": "Jeff", "age": 22, "student" : "no"}
]

预期的:

[{"id": "2", "name": "Jeff", "age": 22, "student" : "no"}]

我尝试了删除重复项的解决方案,但在这些方法中 id=1 和 2 仍然是唯一值,但是如果重复 id ,我需要删除两个或多个匹配对及其字典,只留下不重复的一个。请提供任何帮助。

标签: pythonlistdictionaryduplicates

解决方案


您可以保留 alist来检查 a 的多次出现id,然后您可以忽略该条目

details = [
{"id": "1", "name": "Bob", "age": 21, "student" : "yes"},
{"id": "1", "name": "Mary", "age": 25, "student" : "yes"},
{"id": "2", "name": "Jeff", "age": 22, "student" : "no"}
]

ids = []
to_be_deleted = []

for i in details:
    if i['id'] in ids:
        to_be_deleted.append(i['id'])
    else:
        ids.append(i['id'])

output = [i for i in details if i['id'] not in to_be_deleted]

print(output)
[{'id': '2', 'name': 'Jeff', 'age': 22, 'student': 'no'}]

推荐阅读