Python 如果第一个键的值匹配,则从字典列表中删除这两项

Python 如果第一个键的值匹配,则从字典列表中删除这两项,python,list,dictionary,duplicates,Python,List,Dictionary,Duplicates,预期: details = [ {"id": "1", "name": "Bob", "age": 21, "student" : "yes"}, {"id": "1", "name": "Mary", "age": 25, "student&quo

预期:

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=1和2仍然是唯一的值,但我需要在id重复时删除两个或多个匹配对及其字典,只保留一个不重复的匹配对。请提供任何帮助。

您可以保留一个
列表来检查
id的多次出现情况,然后您可以忽略该条目

详细信息=[
{“id”:“1”,“姓名”:“鲍勃”,“年龄”:21,“学生”:“是”},
{“id”:“1”,“姓名”:“玛丽”,“年龄”:25,“学生”:“是”},
{“id”:“2”,“姓名”:“杰夫”,“年龄”:22,“学生”:“否”}
]
ids=[]
待删除=[]
就我而言,详情如下:
如果id中有i['id']:
要删除。附加(i['id'])
其他:
附加(i['id'])
输出=[如果i['id']不在将被删除的位置,则i代表i的详细信息]
打印(输出)
用于获取仅出现一次的
id

[{'id': '2', 'name': 'Jeff', 'age': 22, 'student': 'no'}]
印刷品:

from collections import Counter

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"}
]

c = Counter(map(lambda x: x['id'], details))

details = list(filter(lambda x: c[x['id']] == 1, details))

print(details)

“id”键出现的所有重复值都应删除
dict中没有“first”键;除非使用
OrderedDict
。否则只能使用
id/to\u be\u deleted
中的一个,如果列表中有大量DICT,将其设置为
集将大大提高性能
from collections import Counter

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"}
]

c = Counter(map(lambda x: x['id'], details))

details = list(filter(lambda x: c[x['id']] == 1, details))

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