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

Python字典如何保留元素首次出现并删除后续所有重复值

解决思路

你原来的代码逻辑和需求不匹配:你当前是判断完整列表是否已存在于结果的值中,而需求是跟踪所有单个元素的出现记录,仅保留元素第一次出现的实例,后续重复出现全部剔除。
你可以用一个集合来存储已经出现过的元素,遍历字典时对每个列表做过滤即可,Python 3.7+ 版本默认保留字典的插入顺序,可直接按原字典顺序遍历,代码实现如下:

d1 = {'test': ['1', '2', '3'],
      'cool': ['7', '1'],
      'idk': ['3', '2', '7', '1'],
      'idc': ['8'],
      'hm': ['1', '4', '5']}

result = {}
# 用来记录已经出现过的元素,集合查找效率远高于列表
seen_elements = set()

for key, original_list in d1.items():
    # 筛选出当前列表中从未出现过的元素
    filtered_list = [item for item in original_list if item not in seen_elements]
    # 把本次新出现的元素加入全局已出现集合
    seen_elements.update(filtered_list)
    # 筛选结果为空时替换为[''],符合你给出的输出要求
    result[key] = filtered_list if filtered_list else ['']

print(result)

运行上述代码得到的输出和你预期完全一致:

{'test': ['1', '2', '3'], 'cool': ['7'], 'idk': [''], 'idc': ['8'], 'hm': ['4', '5']}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:45:04