如何在python里实现对查重去重的功能
时间: 2025-03-30 19:04:44 浏览: 51
### 如何在Python中实现查重和去重功能
#### 列表的查重与去重
对于列表中的重复元素,可以通过多种方式来检测并去除这些重复项。以下是几种常用的方法:
1. **使用集合 (Set)**
集合是一种无序且不允许重复元素的数据结构,在Python中非常适合用于去重操作。通过将列表转换为集合再转回列表即可轻松实现去重[^1]。
```python
original_list = [1, 2, 3, 4, 3, 2, 5]
unique_list = list(set(original_list))
```
2. **使用字典 (Dictionary)**
如果需要保留原始顺序,则可以利用字典键唯一性的特性来进行去重。
```python
from collections import OrderedDict
original_list = ['apple', 'banana', 'orange', 'apple', 'grape']
unique_list = list(OrderedDict.fromkeys(original_list))
```
3. **使用列表推导式 (List Comprehension)**
这种方法允许更灵活地定义哪些项目应该被移除或保留,并能保持原有次序。
```python
original_list = [10, 20, 30, 20, 10, 50, 60, 40, 80, 50, 40]
seen = set()
unique_list = []
[unique_list.append(x) for x in original_list if not (x in seen or seen.add(x))]
```
#### 字典的查重与去重
当涉及到字典时,“查重”的概念可能指的是检查是否有相同的键或者值存在;而“去重”则意味着删除具有相同键或其他属性的条目。
- 若需基于键进行过滤,只需构建一个新的字典即可自动覆盖掉同名键旧有的映射关系。
- 若要依据某些特定条件比如值是否相等来做判断,则可采用如下策略:
```python
input_dict = {'a': 1, 'b': 2, 'c': 1}
output_dict = {}
reversed_dict = {}
for key, value in input_dict.items():
if value not in reversed_dict:
reversed_dict[value] = key
output_dict[key] = value
# 或者如果想保留第一个出现的key-value pair
temp_set = set()
final_dict = {k:v for k,v in input_dict.items() if v not in temp_set and not temp_set.add(v)}
```
#### 文本数据的大规模查重方案——SimHash算法应用实例
针对大规模文本数据集上的高效查重需求,推荐使用SimHash技术。它能够快速估算任意两篇文档之间的相似程度并通过设定阈值得到最终判定结果。下面给出一个简单的例子展示如何运用`simhash`库完成这项工作[^5]。
```python
import jieba.analyse
from simhash import Simhash
def get_simhash(text):
keywords = jieba.analyse.extract_tags(text, topK=10, withWeight=True)
features = [(kw[0], int(kw[1]*10)) for kw in keywords]
return Simhash(features)
text1 = "这是一段测试文字用来演示SimHash的功能"
text2 = "这是另一段类似的测试语句同样为了说明SimHash的作用"
hash1 = get_simhash(text1)
hash2 = get_simhash(text2)
distance = hash1.distance(hash2)
if distance <= 3:
print(f"text1 和 text2 的海明距离是{distance},认为它们相似")
else:
print(f"text1 和 text2 的海明距离是{distance},认为它们不相似")
```
#### 大型Excel表格内的复杂业务逻辑下的综合处理案例分享
最后值得一提的是,在实际工作中经常遇到更加复杂的场景,例如对来自多个来源导入至单张电子表格文件里的海量记录执行一系列预设规则约束后的清洗流程。这里提供一段关于如何定位那些不符合预期模式(即所谓‘异常’)的具体片段供参考学习[^3]。
```python
# 定义筛选店铺价格高于商场价格的索引位置函数
def find_abnormal_records(dataset):
abnormal_indices = []
for idx, record in enumerate(dataset):
try:
shop_price = float(record.get('shopPrice'))
mall_price = float(record.get('mallPrice'))
if shop_price > mall_price:
abnormal_indices.append(idx)
except Exception as e:
continue
return abnormal_indices
```
---
阅读全文
相关推荐




















