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

如何在Python字典中比较值并去除重复元素,确保元素唯一?

问题:去除字典列表值中的重复元素,确保每个元素仅出现一次

我有如下Python字典:

my_dict = {'alpha1': ['a', 'b', 'c', 'd', 'e', 'f'], 'alpha2': ['e', 'f', 'g'], 'alpha3': ['j', 'k', 'l', 'm'], 'alpha4': ['h', 'i', 'j', 'k']}

我需要让字典里的每个元素只出现一次,处理后得到这样的结果:

{'alpha1': ['a', 'b', 'c', 'd', 'e', 'f'], 'alpha2': ['g'], 'alpha3': ['j', 'k', 'l', 'm'], 'alpha4': ['h', 'i']}

我试了这段代码:

result = {}
for key, value in dict.items():
    if value not in result.values():
        result[key] = value
print(result)

但输出还是原来的字典,求帮忙解决。


为啥你的代码没用?

你现在的逻辑是判断整个列表有没有在结果里出现过,但原字典里每个列表都是不一样的对象,所以这个判断永远为真,自然所有列表都被原样保留了。你要检查的是列表里的单个元素有没有重复,不是整个列表。

正确的写法

我们需要用一个集合来记录已经见过的元素,遍历每个键对应的列表时,只留下没见过的元素,同时把新元素加到集合里。代码如下:

my_dict = {'alpha1': ['a', 'b', 'c', 'd', 'e', 'f'], 'alpha2': ['e', 'f', 'g'], 'alpha3': ['j', 'k', 'l', 'm'], 'alpha4': ['h', 'i', 'j', 'k']}
seen = set()  # 用来存已经出现过的元素
result = {}

for key, values in my_dict.items():
    unique_list = []
    for item in values:
        if item not in seen:
            unique_list.append(item)
            seen.add(item)
    result[key] = unique_list

print(result)

运行后就能得到你想要的结果:

{'alpha1': ['a', 'b', 'c', 'd', 'e', 'f'], 'alpha2': ['g'], 'alpha3': ['j', 'k', 'l', 'm'], 'alpha4': ['h', 'i']}

小说明

  • 用集合seen是因为查元素有没有在集合里比在列表里快很多,效率更高。
  • 这里是按原字典的顺序处理的,所以先出现的列表会保留所有元素,后面的列表只留没出现过的,刚好符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:35:15