python中list、dict、set查询速度详细对比

 更新时间:2026年03月10日 10:45:43   作者:needones  
在Python编程语言中list、set和dict是三种常用的数据结构,它们各自有着不同的用途和特性,这篇文章主要介绍了python中list、dict、set查询速度详细对比的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

平常使用的时候,可能对于这三种类型的查询无感,因为数据量小的时候查询速度都很快,所以无感觉,今天来试试。

一百万数据测试

=b list=
0.013915400000000133
=c dict=
2.100000000115898e-06
=d set=
9.999999996956888e-07

一千万数据测试

=b list=
0.12139450000000096
=c dict=
2.9000000001389026e-06
=d set=
1.1000000004202093e-06

一亿数据测试

=b list=
14.738766999999996
=c dict=
0.0010382000000106473
=d set=
0.0005590999999753876

测试代码

b = []
c = {}
d = set()

for i in range(1000000):  # 此处调整数据量
    num = random.randint(0, 10000000000)

    b.append(num)
    c[num] = 1
    d.add(num)

print('=========b list=========')
time1 = time.perf_counter()
if 9999 in b:
    print("yes")
time2 = time.perf_counter()
print(time2 - time1)
print('=========c dict=========')
time1 = time.perf_counter()
if 9999 in c:
    print("yes")
time2 = time.perf_counter()
print(time2 - time1)
print('=========d set=========')
time1 = time.perf_counter()
if 9999 in d:
    print("yes")
time2 = time.perf_counter()
print(time2 - time1)

结论

从上面数据来看,set > dict >> list

list查询速度最慢,性能上差距上万倍

字典: dict会把所有的key变成hash 表,然后将这个表进行排序,这样,你通过data[key]去查data字典中一个key的时候,python会先把这个key hash成一个数字,然后拿这个数字到hash表中看没有这个数字, 如果有,拿到这个key在hash表中的索引,拿到这个索引去与此key对应的value的内存地址那取值就可以了。

集合: 集合的存储方式和字典key类似,都是采用hash存储,相同的值对应相同的地址,所以set中没有相同值,也是无序的

冷知识:你知道这两个有什么区别吗,哪个更快?

a = list()
b = []

有兴趣的小伙伴尝试一下

t1 = time.perf_counter()
a = list()
t2 = time.perf_counter()
print(f"a = list() cost :{t2 - t1}")

t1 = time.perf_counter()
b = []
t2 = time.perf_counter()
print(f"b = []     cost :{t2 - t1}")

总结 

到此这篇关于python中list、dict、set查询速度详细对比的文章就介绍到这了,更多相关python list、dict、set查询速度内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中使用items()方法返回字典元素对的教程

    Python中使用items()方法返回字典元素对的教程

    这篇文章主要介绍了Python中使用items()方法返回字典元素对的教程,是Python入门中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Python使用Traits库实现对象属性

    Python使用Traits库实现对象属性

    Python作为一种动态编程语言,它的变量没有类型,这种灵活性给快速开发带来很多便利,不过它也不是没有缺点,Traits库的一个很重要的目的就是为了解决这些缺点所带来的问题,trait为Python对象的属性增加了类型定义的功能
    2023-11-11
  • Pytho常见的数据可视化库,小白必备

    Pytho常见的数据可视化库,小白必备

    Python作为数据分析的重要语言为数据分析的每个环节都提供了很多库.常见的数据可视化库包括matplotib,seaborm,ggplot,bokeh,pygal,pyecharts等,下面小编一一介绍下,需要的朋友可以参考下
    2021-05-05
  • Django使用list对单个或者多个字段求values值实例

    Django使用list对单个或者多个字段求values值实例

    这篇文章主要介绍了Django使用list对单个或者多个字段求values值实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Jupyter Notebook 基本操作快捷键方式

    Jupyter Notebook 基本操作快捷键方式

    这篇文章主要介绍了Jupyter Notebook 基本操作快捷键方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • PyTorch分布式训练的实现

    PyTorch分布式训练的实现

    本文主要介绍了PyTorch分布式训练的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-01-01
  • Python 有可能删除 GIL 吗?

    Python 有可能删除 GIL 吗?

    这篇文章主要介绍了Python 有可能删除 GIL 吗,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03
  • python中Pycharm 输出中文或打印中文乱码现象的解决办法

    python中Pycharm 输出中文或打印中文乱码现象的解决办法

    本篇文章主要介绍了python中Pycharm 输出中文或打印中文乱码现象的解决办法 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Python生成艺术图案实例代码(分形、数学曲线)

    Python生成艺术图案实例代码(分形、数学曲线)

    这篇文章主要介绍了Python生成艺术图案(分形、数学曲线)的相关资料,主要讲解如何用Python的matplotlib和numpy库绘制分形与数学曲线,涵盖曼德勃罗集、科赫雪花、心形线等经典图形,需要的朋友可以参考下
    2025-08-08
  • 解决python中画图时x,y轴名称出现中文乱码的问题

    解决python中画图时x,y轴名称出现中文乱码的问题

    今天小编就为大家分享一篇解决python中画图时x,y轴名称出现中文乱码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01

最新评论