产品矩阵重复值处理需求:实现矩阵值的唯一性
实现矩阵元素唯一性的解决方案
需求明确:确保矩阵中每个形如[17;4]、[17;7]的元素仅出现一次,当前矩阵存在重复问题(参考示意图:
)
核心解决步骤
识别重复元素
遍历矩阵,用哈希表记录每个元素的出现次数,快速定位重复项:matrix = [[17,4], [17,7], [17,4], [23,5]] element_count = {} for row in matrix: elem = tuple(row) # 列表不可哈希,转为元组作为字典键 element_count[elem] = element_count.get(elem, 0) + 1 # 提取重复元素 duplicates = [k for k, v in element_count.items() if v > 1]去重实现
两种实用方案:- 保留原顺序,仅移除后续重复项:
unique_matrix = [] seen = set() for row in matrix: elem = tuple(row) if elem not in seen: seen.add(elem) unique_matrix.append(list(elem)) - 快速生成无重复矩阵(不保证原顺序):
unique_matrix = list(map(list, set(tuple(row) for row in matrix)))
- 保留原顺序,仅移除后续重复项:
结果验证
确认处理后的矩阵所有元素唯一:final_count = {} for row in unique_matrix: elem = tuple(row) final_count[elem] = final_count.get(elem, 0) + 1 # 断言验证,若失败则说明仍有重复 assert all(v == 1 for v in final_count.values()), "矩阵中仍存在重复元素"
注意事项
- 若矩阵元素为不可哈希类型(如嵌套数组、自定义对象),需自定义比较逻辑或转换为可哈希形式
- 需保留原矩阵元素顺序时,优先选择第一种去重方法
内容的提问来源于stack exchange,提问作者Rohan Dhi
相关产品推荐
相关产品推荐

