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

如何在Python字典中移除重复值?问题排查与解决

问题分析与修正

原代码的错误点

  • 变量名不匹配:你的字典实际叫top_topics,但循环里用的是topic_keywords,如果未提前赋值会直接报错;就算赋值了,核心逻辑依然错误。
  • 判断逻辑完全错误:你拿列表里的单个元素(比如'football')去和字典的**值(列表类型,比如['football'])**做对比,字符串永远不可能等于列表,所以item not in topic_keywords.values()永远为False,根本不会往unique_dict里添加内容。如果unique_dict初始为空,最后topic_keywords会变成空字典;如果初始是原字典的拷贝,结果自然和原字典一致。
  • 多余的嵌套循环:你的每个字典值都是单元素列表,循环for item in value完全没必要,直接操作value即可。

修正方案

方案1:保留第一个['football'],移除后续重复条目

适用于想保留唯一的同值条目,去掉重复项:

top_topics = {0: ['soccer'], 1: ['football'], 2: ['hockey'], 3: ['basketball'], 4: ['football']}
unique_dict = {}
seen_values = set()

# Python 3.7+字典默认有序,会保留插入顺序
for key, value in top_topics.items():
    # 列表不可哈希,转成元组存入集合记录已出现的值
    value_tuple = tuple(value)
    if value_tuple not in seen_values:
        seen_values.add(value_tuple)
        unique_dict[key] = value

top_topics = unique_dict
print(top_topics)
# 输出:{0: ['soccer'], 1: ['football'], 2: ['hockey'], 3: ['basketball']}

方案2:直接移除所有值为['football']的条目

如果不需要保留任何['football']的条目,用字典推导式更简洁:

top_topics = {0: ['soccer'], 1: ['football'], 2: ['hockey'], 3: ['basketball'], 4: ['football']}
top_topics = {k: v for k, v in top_topics.items() if v != ['football']}
print(top_topics)
# 输出:{0: ['soccer'], 2: ['hockey'], 3: ['basketball']}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:32:17