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

分类: 计算机技术
推荐阅读:
Python Qt库PySide和PyQt哪个好? Qt是一个跨平台的GUI程序开发框架;使用Qt可以轻松的开发出GUI程序;而想在Python中创建Qt应用,则需一套用于调用Qt API的库;这里主要介绍两个比较成熟的python Qt库,PyQt和PySide;
C/C++程序打印输出中文导致乱码的解决方法 C/C++程序打印输出中文导致乱码的解决方法如下:
Golang实现线性搜索算法(Linear Search) 本文将使用Go语言实现线性搜索算法(Linear Search);
Linux从视频文件里提取音频 通常来说,从一个视频文件里提取出其音频可能需要你学习使用某些音视频处理软件;而在Linux下,你只需要一条命令即可实现将将音频从视频文件中提取出来:
Python 生成UUID 在Python中,可以使用uuid模块生成UUID。默认情况下,uuid.uuid4()函数会生成一个随机UUID。
Python dir()函数 在Python中,dir()函数是一个内置函数,用于列出指定对象的属性和方法。如果没有指定对象,则默认使用当前作用域中的所有对象。dir()函数返回一个字符串列表,包含指定对象的所有属性和方法名称。