Python字典去重竟然比集合去重快速40多倍

news2024/11/27 18:35:16

这里写目录标题

  • 对比代码
  • 结果图
  • 代码解析

对比代码

from  glob import glob
from tqdm import tqdm
import time
path_list=glob("E:/sky_150b/任务组_20231207_2023/*.jsonl")
# for two in tqdm(path_list):
one=path_list[0]

with open(one,"r",encoding="utf-8") as f:
    data=f.readlines()
start=time.time()
data_list={}
for i in tqdm(data):
    if data_list.get(i,False)==False:
        data_list[i]="1"
print(time.time()-start)
start=time.time()
data_list = set()

for i in tqdm(data):
    data_list|=set(i)
print(time.time() - start)
    # with open(one, "w", encoding="utf-8") as f:
    #     f.writelines([i for i in data_list.keys()])
    #

结果图

在这里插入图片描述

代码解析

这段代码的作用是比较两种方法分别用于处理一个文件中的数据重复项的时间效率。

具体流程如下:

  1. 导入需要用到的模块:

    from  glob import glob
    from tqdm import tqdm
    import time
    

    glob 模块用于查找匹配特定模式的文件路径名,它返回所有符合条件的文件路径列表。tqdm 模块是一个用于在 Python 迭代器中添加进度条的库。

  2. 使用 glob 模块获取所有符合条件的文件路径名:

  path_list=glob("E:/sky_150b/任务组_20231207_2023/*.jsonl")

这里使用了 glob() 函数获取了所有以 .jsonl 结尾文件的路径名,存储在 path_list 列表中。

  1. 对于每个文件路径名循环处理重复项:

    one=path_list[0]
    
    with open(one,"r",encoding="utf-8") as f:
        data=f.readlines()
    start=time.time()
    data_list={}
    for i in tqdm(data):
        if data_list.get(i,False)==False:
            data_list[i]="1"
    print(time.time()-start)
    start=time.time()
    data_list = set()
    
    for i in tqdm(data):
        data_list|=set(i)
    print(time.time() - start) 
    

    分别使用两种不同的方法处理文件中的重复项并计算时间。其中第一个循环使用了字典的键值对特性,通过判断键是否存在来去重,第二个循环则使用了 Python 内置的 set 数据结构实现去重。

    time.time() 函数用于获取当前时间戳,两次获取的时间戳相减即为整个循环处理时间。

    tqdm 模块的作用是在循环时显示进度条,使得处理结果更加直观。

最终输出两种处理方法的时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1300600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第 9 部分 — 内存增强 Transformer 网络:数学见解

一、说明 在顺序数据处理领域,传统的 Transformer 架构擅长处理短期依赖性,但在需要大量内存和长序列上下文保留的任务中表现不佳。在这篇综合博客中,我打算探索一种新颖的混合方法,将 Transformer 与显式长期记忆模块集成在一起。…

viple模拟器使用(五):Web 2D模拟器中实现两距离局部最优迷宫算法

关于两距离局部最优迷宫算法的原理本文不再赘述,详情请参考:viple模拟器使用(四),归纳总结为: 前方有路,则直行; 前方无路,则右转90度,标记右转完成&#xff…

【js】js实现多个视频连续播放:

文章目录 一、效果&#xff1a;二、实现&#xff1a;三、案例&#xff1a; 一、效果&#xff1a; 二、实现&#xff1a; <!DOCTYPE html> <html> <head><title>Video Player</title><style>#progressBar { width: 800px;height: 20px;b…

Botton进一步了解(点击事件)

点击事件和长按事件 监听器&#xff1a;专门监听控件的动作行为。只有控件发生了指定的动作&#xff0c;监听器才会触发开关区执行对应的代码逻辑。按钮控件有两种常用的监听器&#xff1a; 点击监听器&#xff1a;通过setOnClickListener方法设置。按钮被按住少于500ms时会触…

集合的基本内容以及迭代器的介绍

在我们java中我们存储数据的方式&#xff0c;在我们之前学习中数组是可以存储我们的数据的&#xff0c;但是数组存储数据有一些弊端&#xff0c;灵活性不强&#xff0c;存储数据类型有限&#xff0c;灵活性不强这一点主要是体现在两个方面&#xff1a;一方面数组的长度是自定义…

【数据结构】——排序篇(下)

前言&#xff1a;前面我们的排序已经详细的讲解了一系列的方法&#xff0c;那么我们现在久之后一个归并排序了&#xff0c;所以我们现在就来讲解一下归并排序。 归并排序&#xff1a; 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法…

springboot集成knife4j详细教程

使用原生的swagger作为接口文档&#xff0c;功能不够强大&#xff0c;并且默认的ui比较简陋&#xff0c;不符合大众审美。所以实际开发中推荐使用knife4j对swagger进行增强。knife4j的地址&#xff1a;https://gitee.com/xiaoym/knife4j 基本使用 想要使用knife4j非常简单&…

MyBatis 四大核心组件之 ResultSetHandler 源码解析

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

【Linux】 通过宝塔面板重置SSH密码,无需原密码

目录 应用场景&#xff1a; 步骤一&#xff1a;登录面板 步骤二&#xff1a;安装linux工具箱 步骤三&#xff1a;点击设置 步骤总结&#xff1a; 应用场景&#xff1a; 忘记ssh密码&#xff08;前提要有宝塔的账号密码&#xff09;修改重置ssh密码 步骤一&#xff1a;登录…

LVGL | Demo实例使用说明

LVGL | Demo实例使用说明 时间&#xff1a;2023年12月10日21:51:17 文章目录 LVGL | Demo实例使用说明Demos for LVGLAdd the examples to your projectsDemosWidgetsMusic playerKeypad and encoderBenchmarkStress Contributing Demos for LVGL Add the examples to your p…

【工具】JS脚本|浏览器脚本6分钟极速入门 · 开发一个限制自己刷b站的脚本

这张图花里胡哨的是让AI生成的&#xff0c;我觉得怪可爱的&#xff0c;就直接作为封面了。 这篇文章中会开发一个JS脚本&#xff0c;这是一个用来限制b站网页版功能的脚本&#xff0c;避免刷b站的时间过长。功能如下&#xff1a; 除了搜索、视频页、私信页之外的任何页都会被重…

RabbitMQ学习笔记10 综合实战 实现新商家规定时间内上架商品检查

配置文件&#xff1a; 记住添加这个。 加上这段代码&#xff0c;可以自动创建队列和交换机以及绑定关系。 我们看到了我们创建的死信交换机和普通队列。 我们可以看到我们队列下面绑定的交换机。 我们创建一个controller包进行测试: 启动&#xff1a; 过一段时间会变成死信队列…

Multisim电路仿真软件使用教程

安装直接参考这篇文章&#xff1a;Multisim 14.0安装教程 软件管家公众号里有很多软件&#xff0c;需要的可以去找下然后安装&#xff0c;这里用的是14.0版本。 这里有个大神的详细教程&#xff0c;可以参考&#xff1a; Multisim软件使用详细入门教程&#xff08;图文全解&…

mybatis数据输出-map类型输出

1、建库建表 CREATE DATABASE mybatis-example;USE mybatis-example;create table emp (empNo varchar(40) null,empName varchar(100) null,sal int null,deptno varchar(10) null ); 2、pom.xml <dependencies><dependency><groupId>org…

原来JMeter 分布式执行原理这么简单,为什么没有早点看到呢!

在使用 JMeter 进行性能测试时&#xff0c;如果并发数比较大&#xff08;比如项目需要支持 10000 并发&#xff09;&#xff0c;单台电脑&#xff08;CPU 和内存&#xff09;可能无法支持&#xff0c; 这时可以使用 JMeter 提供的分布式测试的功能&#xff0c;使用多台测试机一…

Python实现FA萤火虫优化算法优化XGBoost分类模型(XGBClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法&#xff08;Fire-fly algorithm&#xff0c;FA&#xff09;由剑桥大学Yang于2009年提出 , …

6.题目:编号2490 小蓝的括号串1

题目: ### 这道题主要考察stack #include<bits/stdc.h> using namespace std; const int N105; stack<char> stk; char s[N]; int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n;cin>>n;cin>>s1;bool anstrue;for(int i1;i<n;i){…

【PWN】学习笔记(二)【栈溢出基础】

课程教学 课程链接&#xff1a;https://www.bilibili.com/video/BV1854y1y7Ro/?vd_source7b06bd7a9dd90c45c5c9c44d12e7b4e6 课程附件&#xff1a; https://pan.baidu.com/s/1vRCd4bMkqnqqY1nT2uhSYw 提取码: 5rx6 C语言函数调用栈 一个栈帧保存的是一个函数的状态信息&…

java--Date、SimpleDateFormat时间类,JDK8之前的

1.Date 代表的是日期和时间 2.SimpleDateFormat 代表简单日期格式化&#xff0c;可以用来把日期对象、时间毫秒值格式化成我们想要的形式。 3.时间格式常见符号 4.SimpleDateFormat解析字符串时间成为日期对象