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

如何删除字典中值重复出现的所有键值对?

解决字典中删除所有值重复的键值对问题

嘿,这个需求很清晰——只要某个值在字典里出现多次,就把所有对应这个值的键值对都删掉,只保留那些值唯一的项对吧?咱们可以用两步轻松搞定:

方法一:用collections.Counter快速统计频次

Counter是Python标准库中专门用来统计元素出现次数的工具,用它来处理这个问题非常高效:

from collections import Counter

# 你的示例字典
monster_dict = {
    'Monster 1': 'Modema',
    'Monster 2': 'Aninige',
    'Monster 3': 'Dolamisme',
    'Monster 4': 'Malexo',
    'Monster 5': 'Eludisnismu',
    'Monster 6': 'Du-Minime',
    'Monster 7': 'Anu',
    'Monster 8': 'Mu',
    'Monster 9': 'Aluligige',
    'Monster 10': 'Asmismu',
    'Monster 11': 'Aninige',
    'Monster 12': 'Dolamisme'
}

# 第一步:统计每个值的出现次数
value_counts = Counter(monster_dict.values())

# 第二步:过滤出值只出现一次的键值对
filtered_dict = {key: val for key, val in monster_dict.items() if value_counts[val] == 1}

print(filtered_dict)

运行这段代码后,你会得到过滤后的字典:

{'Monster 1': 'Modema', 'Monster 4': 'Malexo', 'Monster 5': 'Eludisnismu', 'Monster 6': 'Du-Minime', 'Monster 7': 'Anu', 'Monster 8': 'Mu', 'Monster 9': 'Aluligige', 'Monster 10': 'Asmismu'}

方法二:手动统计频次(不依赖标准库)

如果你不想导入Counter,也可以用普通字典手动统计值的出现次数:

# 手动统计每个值的出现次数
value_counts = {}
for val in monster_dict.values():
    value_counts[val] = value_counts.get(val, 0) + 1

# 同样进行过滤
filtered_dict = {key: val for key, val in monster_dict.items() if value_counts[val] == 1}

这个方法的逻辑和第一种完全一致,只是把统计频次的部分换成了手动实现,适合需要轻量实现的场景。

两种方法的核心思路都是:先搞清楚每个值出现了多少次,再只保留那些出现次数为1的键值对,这样就完美解决了你的问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:13:52