首页 > 编程语言 >python列表、集合、字典转换要点以及查找速度区别,如何在大规模数据中实现快速查找

python列表、集合、字典转换要点以及查找速度区别,如何在大规模数据中实现快速查找

时间:2024-03-01 16:01:02浏览次数:27  
标签:set tuple python list 查找 dict key 字典

1. list与set的区别与优缺点:
循环速度: list最适合做固定长度的遍历,而且有顺序。set是无序的,list转换为set会乱序,若用set给list去重,转化为list时须用原list的index排序:new_list.sort(key=old_list.index)。所以这种循环尽量用list
查询速度: set > list, set查询的key都是hash过的,所以速度最快,list不适合用来做查询
增删速度: set > list, list的append操作尽量少做,因为会涉及重新分配地址的问题,set只需要增长指针链表
空间上: 由于list默认预留的空间会随着append指数级的变大,所以空间上也是set

2. dict list set tuple转化:
set、list、tuple 三种类型可以直接进行转化
将dict转为set、list、tuple ,值只转换了key
若将set、list、tuple 转为字典,必须set、tuple、list里面的元素必须是元组(列表),元组(列表)中的元素必须是2个,才能转为字典
eg:print(dict({(1, 2), (3, 4)})) ==== {1: 2, 3: 4}

3. list查找时间复杂度:O(n),set和dict查找时间复杂度:O(1) or O(logn)
查找效率:set>dict>list
单次查询中:list 就是O(n)的;而set做了去重,本质应该一颗红黑树(猜测,STL就是红黑树),复杂度O(logn);dict类似对key进行了hash,然后再对hash生成一个红黑树进行查找,其查找复杂其实是O(logn)。O(1)只是理想的实现,实际上很多hash的实现是进行了离散化的。dict比set多了一步hash的过程,比set慢,不过差别不大。
因此,如果是要频繁的查找,请使用set或dict。


因此,可以得出:根据某特定值查找几十万条数据的列表,遍历列表效率极低,可根据数据共同特征进行分类,即特征为key、分类后数据list为value,构建字典,根据key得到待遍历列表,缩小遍历范围,提升查找效率。

 

参考文献:
python中,list和set在速度上有差异吗? - 知乎 (zhihu.com)

Python 中list ,set,dict的大规模查找效率_python数据类型查询效率-CSDN博客

python中set、list、tuple、dict相互转化_tuple,dict,list之间能否相互转换?请举例说明-CSDN博客

标签:set,tuple,python,list,查找,dict,key,字典
From: https://www.cnblogs.com/lin-yysy/p/18047289

相关文章

  • 洛谷题单指南-二分查找与二分答案-P3853 [TJOI2007] 路标设置
    原题链接:https://www.luogu.com.cn/problem/P3853题意解读:相邻路标的最大距离即空旷指数,空旷指数越小,用的路标越多,因此可以根据空旷指数将使用路标情况分成两类:路标数<=K,路标数>K,对空旷指数进行二分即可。解题思路:二分的判定条件为,给定空旷指数,计算需要的路标数只需遍历每两......
  • Python函数每日一讲 - help函数的使用与实践
    引言今天周五,我们来看一个简单又熟悉的函数help(),help()函数就是Python中一个非常有用的工具,它能够帮助我们快速查找和理解Python中的各种函数、模块和对象的用法和功能。语句概览help()函数是Python内置函数之一,用于获取帮助信息。其语法格式如下:help([object])其中,object......
  • Pycharm:在工程目录下新建一个Python.exe
    1、起因公司电脑上把Python安装在了系统盘,但是我没有系统盘的修改权限,导致用pip时无法把包安装到系统盘2、解决方案在工程目录下,为工程新建一个Python.exe,之后该工程都采用这个python和它的pip,把包安装在工程包下。1)File→Settings→Project:xxx→PythonInterpreter2)Python......
  • python生成Excel文件减少使用内存
    1、openpyxl模块生成2、xlsxwriter模块contant_memory=True生成TRANSLATEwithxEnglishArabicHebrewPolishBulgarianHindiPortugueseCatalanHmongDawRomanianChineseSimplifiedHungarianRussianChineseTraditionalIndonesianSlovak......
  • 洛谷题单指南-二分查找与二分答案-P2678 [NOIP2015 提高组] 跳石头
    原题链接:https://www.luogu.com.cn/problem/P2678题意解读:最短跳跃距离越大,要移走的石头就越多,因此可以根据最短跳跃距离的不同把情况分为两类:移走的石头数<=M、移走的石头数>M,对最短跳跃距离二分即可。解题思路:二分的判定条件如下:对于给定最短跳跃距离,需要计算移走的石头数,......
  • MLE / AIE Notes in Python
    ......
  • python安装weditor 失败或者不能展示app界面
    起初原因是weditor中链接模拟器后,不能展示app内容,页面刷新只展示首页始终是以下界面网友问答大多是1、weditor和python版本问题,安装高版本或者低版本的weditor仍然报错2、setup版本太低,使用pipinstall--upgradepipsetuptools==45.2.0升级setup包3、先gitclone http......
  • faster-fifo:C++实现的python多进程通信队列 —— 强化学习ppo算法库sample-factory的C
    项目地址:https://github.com/alex-petrenko/faster-fifo需要注意,该项目给出了两种安装方法,一种是pip从pypi官网安装,一种是从GitHub上的源码安装;经过测试发现这个项目维护程度较差,因此pypi官网上的项目比较落后,因此不建议使用pypi上的安装,而是进行源码编译安装。给出源码编......
  • 【Python入门教程】Python实现鸡兔同笼
    ​        今天跟大家分享一下很久之前自己做的鸡兔同笼求解问题的小游戏,使用公式和基本的判断语句即可实现,可以用来当练手或者消磨时间用。    大家在编代码的时候最重要就是先理清逻辑思路,例如应该套几层循环、分几个模块等等。然后在编码时可以先随意一点,变......
  • Python 爬虫自动生成 request heads 网站
    前言全局说明一、获取curl信息网页右键--检查--网络,里找到需要的那个文件。文件上右键选择复制--复制位curl(bash)Chrome效果:Edge效果:然后把复制内容放到下面网站中二、生成requestheadshttps://curlconverter.com免责声明:本号所涉及内容仅供......