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

Python字典中移除反向重复项的实现方法

解决Python字典关联去重问题

这是个很常见的关联去重需求,核心是要识别并跳过已经处理过的关联节点,避免重复记录循环或双向的条目。这里给你一个简洁的实现思路和代码:

核心思路

我们需要维护一个已访问节点集合,用来跟踪已经处理过的键和关联值。遍历原字典时,只要当前键不在已访问集合里,就把它加入结果字典,同时把该键和它所有的关联值都标记为已访问——这样后续遇到这些值作为键时,就直接跳过,不会重复添加。

代码实现

original_dict = {'a': ['b'], 'c': ['d'], 'x': ['y'], 'y': ['x'], 'i': ['j','k'], 'j': ['i','k'], 'k': ['i','j']}
result_dict = {}
visited_nodes = set()

for key, related_values in original_dict.items():
    if key not in visited_nodes:
        # 将当前键值对加入结果
        result_dict[key] = related_values
        # 标记当前键和所有关联值为已访问
        visited_nodes.add(key)
        visited_nodes.update(related_values)

print(result_dict)

输出结果

运行代码后,输出完全符合你的预期:

{'a': ['b'], 'c': ['d'], 'x': ['y'], 'i': ['j', 'k']}

逻辑说明

  • 对于双向关联的x和y:处理x时,把x和y都标记为已访问,后续遍历到y时,因为y已经在已访问集合里,就跳过不添加。
  • 对于循环关联的i、j、k:处理i时,把i、j、k都标记为已访问,后续遍历j和k时都会直接跳过,只保留i的条目。
  • 对于单向关联的a→b和c→d:因为b和d不是原字典的键,所以不会触发跳过逻辑,正常保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:19:39