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

如何高效删除Python字典中同key或跨key的所有重复值

实现方案

场景1:所有出现过≥2次的元素全局完全移除(匹配你给出的示例输出)

这种场景下只要某个元素在整个字典的所有列表中总共出现超过1次,就会从所有位置删除,时间复杂度为O(n)(n为所有列表的元素总个数),实现逻辑如下:

  • 第一步遍历所有元素统计全局出现频次
  • 第二步按频次过滤每个列表,仅保留出现次数为1的元素
    代码实现:
from collections import Counter

original_dict = {
    "A": ["a", "b", "c"],
    "B": ["a", "d", "f"],
    "C": ["i", "i", "j"]
}

# 统计所有值的全局出现次数
count = Counter(val for lst in original_dict.values() for val in lst)
# 过滤得到结果
res = {k: [v for v in lst if count[v] == 1] for k, lst in original_dict.items()}

执行后res的值和你给出的目标结构完全一致。

场景2:保留元素第一次出现的实例,仅删除后续重复副本

如果你的需求是重复元素只留第一次出现的位置,后续所有重复出现的都删除(比如示例中A的a会保留,B的a会删除,C的第一个i会保留,第二个i会删除),可以用下面的方案,时间复杂度同样是O(n):

seen = set()
res = {}
for k, lst in original_dict.items():
    filtered = []
    for v in lst:
        if v not in seen:
            filtered.append(v)
            seen.add(v)
    res[k] = filtered

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 13:42:03