python中set、dict和dict.keys的性能对比


这篇文章主要介绍“python中set、dict和dict.keys的性能对比”,在日常操作中,相信很多人在python中set、dict和dict.keys的性能对比问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python中set、dict和dict.keys的性能对比”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!当我们统计文本的词频时,通常需要查询当前词是否已经出现过,如果出现过,那么次数增1。通常我用dict来保存词和词频。我常用的方式是:用了很久觉得速度还行。
后来看到有大神是这么用的:感觉这样似乎合理一些,因为我要做的本来就是常看word是否是vocab_map的key.于是之后都用这种方式。
某天,处理大量文本,且文本属于开放领域,词汇量也大,采用第二种方式,速度极慢,这时候,以为是查询dict本身比较慢,并没有意识到是vocab_map.keys()的问题。于是,将词同时存入set,查询时查set,速度快了很多。抽取小部分数据,量化对比set、dict、dict.keys()的查询速度,结果如下:
1.查询vocab_dict,打印语句:2.查询vocab_dict.keys(),打印语句如下:3.查询vocab_set,打印语句:和查询vocab_ 香港云主机dict差不多。那么为什么dict.keys()查询速度比另外两个慢很多呢?这就要对比list、dict、set三种的数据结构了。
dict.keys()实际上是list(keys),是dict的所有key组成的list。查找一个元素是否在list中是以list的下标为索引遍历list.而查询是否在dict中,是将key以hash值的形式直接找到key对应的索引,根据索引可直接访问value。对量大的dict查询,自然是后者快很多。
而set和dict的存储原理基本是一样的,唯一不同的是,set没有value,只有key。对查询key是否在dict或sset内,效果基本上是一样的。由此,可以得出,如果存储的数据会被反复查询,且量大,那么,尽量不要用list,尽量用dict,如果元素不重复,用set更好。查询是否在dict内,也不要在用dict.keys()
到此,关于“python中set、dict和dict.keys的性能对比”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注开发云网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: win10怎么把常用网站固定在开始菜单

本篇内容主要讲解“win10怎么把常用网站固定在开始菜单”,感兴趣的朋友不妨来看看。本文介绍的方 香港云主机法操作简单快捷,实用性强。下面就让小编来带大家学习“win10怎么把常用网站固定在开始菜单”吧!  win10把常用网站固定在开始菜单的方法如下:  首…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/07 11:43
下一篇 08/07 11:43

相关推荐