You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python字典内多列表去重:保留靠前列表首次出现元素的方案

按列表优先级对字典内列表元素去重的实现方案

需求说明

给定键为递增序号的字典,每个键对应一个列表,去重规则为:如果元素已经在序号更小的列表中出现过,则删除该元素,仅保留元素第一次出现在最靠前列表中的实例。

示例输入输出

输入:{1:[0,1,2,3], 2:[1,4,5], 3:[0,4,2,5,6], 4:[0,2,7,8], 5:[9]}
期望输出:{1:[0,1,2,3], 2:[4,5], 3:[6], 4:[7,8], 5:[9]}

实现代码

# 存储已经出现过的元素,查询效率为O(1)
seen_elements = set()
# 输入字典,请勿使用dict作为变量名,避免覆盖Python内置dict类
source_dict = {1:[0,1,2,3], 2:[1,4,5], 3:[0,4,2,5,6], 4:[0,2,7,8], 5:[9]}

# 按序号从小到大遍历字典的键
for idx in sorted(source_dict.keys()):
    # 过滤当前列表,仅保留未出现过的元素
    filtered_list = [item for item in source_dict[idx] if item not in seen_elements]
    # 更新字典中当前序号对应的列表
    source_dict[idx] = filtered_list
    # 将本次新增的元素存入已出现集合
    seen_elements.update(filtered_list)

print(source_dict)

代码说明

  • 用set存储已出现元素,相比列表查询性能更高,适合处理大数量级的元素
  • 遍历前对字典键做排序处理,即使键不是连续整数也能保证按序号从小到大的优先级处理
  • 列表推导式保留了原列表内元素的相对顺序,仅删除符合规则的重复元素

内容的提问来源于stack exchange,提问作者Shiju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:45:10