Python使用集合实现内容去重

有这么一个场景,某个文件用于记录人名(也可以是URL或者其他的),编辑发现,出现了重复的内容。那么我们如何使用Python来进行去重呢?

如果换做刚学习编程的我,我一定会把所有内容加载到内存,再挨个的进行比对,如果有重复的则删除;那种方法耗时(取决于具体算法),还low。现在可以有一种更好的方法可以实现快速的去重。

Python 集合(set)

集合(set)是一个无序的不重复元素序列。

Python 中使用大括号{}或者set()函数来创建集合。

创建一个空集必须使用set()而不是{},因为{}是用来创建一个空字典。

没有键的{}就是一个集合(set),会自动删除重复的值。

回到本文开头的问题,再利用Python集合的特性;只需要将文件内容读入到表中,然后使用set()函数生成一个集合,再将集合中的内容写回到文件中即可。

实现代码:

import time

while True:
    
    file_name=input('请输入文件路径或文件名:')
    
    try:
        with open(file_name) as fp:
            domain_lst = fp.readlines()
    except:
        print('错误的文件路径!!!')
        continue
    
    start=time.time()
    
    print('总数:',len(domain_lst))
    
    new_lst=list(set(domain_lst))
    
    print('去重后:',len(new_lst))
    print(time.time()-start,'秒')
    
    with open(file_name,'w') as fp:
        fp.write(''.join(new_lst))
        
    print('文件保存到:',file_name)

上面的代码实现了内容去重,并记录了去重前后的数量,以及所花时间;

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/1120.html

分类: 计算机技术
推荐阅读:
Rust实现字符串sha1、sha256、sha512加密 本文将在Rust语言中使用sha1、sha256、sha512等安全散列算法对字符串进行加密;
查询SSL证书的有效期 在本文中,你将了解如何查询网站SSL证书的有效期;首先,通过浏览器打开要查询的网站,以查询本站SSL证书是否过期为例...
Python实现二分法检索(binary search) 二分法检索(binary search)又称折半检索,二分法检索的基本思想是设字典中的元素从小到大有序地存放在数组(array)中。
Python计算数组的总和 给定一个整数数组,使用Python计算其元素的总和;
PySide6 widgetAt()函数详细教程 Pyside6.QtWidgets.QApplication类的成员函数widgetAt()用于返回屏幕位置(x,y)处的小部件对象,如果那里没有Qt小部件,则返回None;该方法无法获取其它进程的Qt小部件;
Rust unreachable宏的用法和示例 unreachable是Rust中的一个宏,它用于标记代码中的一个不可能被执行的分支;这个宏告诉编译器在这个分支上的代码永远不会被执行到;这对于表明某些情况下的代码不可达是很有用的。