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