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

如何在Python中从数组中获取重复值、去重唯一值以及仅出现一次的唯一值

解决数组中提取仅出现一次元素的问题

嗨,我来帮你实现获取数组中仅出现一次的唯一值的需求!先看看你的现有代码:它已经能拿到去重后的所有元素和重复出现过的元素,但没法区分那些只出现一次的元素——核心问题是缺少对每个元素出现次数的统计。

方案1:基础字典统计法

我们可以先遍历数组,用字典记录每个元素的出现次数,再根据次数分类整理三个列表:

def algo(array):
    # 第一步:统计每个元素的出现次数
    count_dict = {}
    for item in array:
        if item in count_dict:
            count_dict[item] += 1
        else:
            count_dict[item] = 1
    
    # 第二步:根据次数分类
    duplicate = []
    unique = []
    superunique = []
    for item, count in count_dict.items():
        unique.append(item)  # 所有去重后的元素
        if count > 1:
            duplicate.append(item)  # 出现多次的元素
        else:
            superunique.append(item)  # 仅出现一次的元素
    
    print("Duplicate values: ", duplicate)
    print("Unique Values: ", unique)
    print("Existing Unique Values (only once): ", superunique)

# 测试示例数组
array = [2,4,2,4,88,98,88,100,33,100]
algo(array)

运行结果完全符合你的预期:

Duplicate values:  [2, 4, 88, 100]
Unique Values:  [2, 4, 88, 98, 100, 33]
Existing Unique Values (only once):  [98, 33]

方案2:用collections.Counter简化代码

Python标准库的collections.Counter可以帮我们一行完成次数统计,让代码更简洁:

from collections import Counter

def algo(array):
    count = Counter(array)
    unique = list(count.keys())
    # 推导式快速筛选重复/仅出现一次的元素
    duplicate = [item for item, cnt in count.items() if cnt > 1]
    superunique = [item for item, cnt in count.items() if cnt == 1]
    
    print("Duplicate values: ", duplicate)
    print("Unique Values: ", unique)
    print("Existing Unique Values (only once): ", superunique)

array = [2,4,2,4,88,98,88,100,33,100]
algo(array)

小提示:优化原代码的重复值列表

你的原代码中,duplicate列表会记录每次重复的触发(比如如果数组是[2,2,2],原代码会输出Duplicate values: [2,2]),而上面的方案会输出去重后的重复元素集合[2],这通常是更实用的结果~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 14:22:43