如何在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
相关产品推荐
相关产品推荐

