背景:
我有一个列表,列表中存储的子元素是字典,字典中存在多个键值对,其中id是绝对不相同的,但其他键值对可能和另外的子元素重复,现在要去除重复的子元素
# 原始列表
original_list = [
{"id": 1, "name": "Alice", "age": 20},
{"id": 2, "name": "Bob", "age": 25},
{"id": 3, "name": "Alice", "age": 30},
{"id": 4, "name": "Carol", "age": 35},
{"id": 5, "name": "Bob", "age": 25},
]
# 辅助集合
seen = set()
# 存储不重复子元素的列表
unique_list = []
# 遍历原始列表
for item in original_list:
# 创建子元素的唯一标识,不包含id
unique_id = frozenset(item.items()) - frozenset([("id", item["id"])])
# 如果唯一标识不在辅助集合中,表示非id部分是首次出现
if unique_id not in seen:
# 将唯一标识加入辅助集合中,用于判断后续是否重复出现
seen.add(unique_id)
# 将不重复的子元素添加到结果列表中
unique_list.append(item)
# 打印结果
print(unique_list)
标签:针对,name,age,list,列表,unique,id,字典
From: https://www.cnblogs.com/vetra/p/18131408