针对列表中的字典去重

背景:

我有一个列表,列表中存储的子元素是字典,字典中存在多个键值对,其中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)
posted @   vetra  阅读(43)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示