设为首页 收藏本站
查看: 952|回复: 0

[经验分享] python的set数据结构居然和dict相似

[复制链接]

尚未签到

发表于 2017-5-5 10:23:34 | 显示全部楼层 |阅读模式
  前期在python程序开发中用了很多set,
  提供了丰富的‘&,|,-’等操作,使用非常方便,方便鬼方便,对于服务器性能还是非常重要的。于是
  对SET的速度做了些测试,非常的快(我的测试方法是插入100W条数据,然后插入100W零1,set特性肯定会在这100w数据中查找,如果遍历查找是吃不消的,测试结果非常快)。
  于是看了python 2.5中set部分的实现,貌似是使用hashtable做底层的数据结构。
  于是写python代码做了测试,如下:
  import random
  l = []
  m = {}
  i = 0
  while 1:
  v = random.randint(1,10000)
  l.append(v)
  m[v] = 1
  i += 1
  if i >= 100:
  break
  s = set(l)
  print 's:', s, '\n'
  print 'm:', m.keys(), '\n'
  执行后打印结果:
  s: set([5888, 8712, 1553, 3092, 7706, 9247, 4640, 9761, 7721, 560, 8244, 1598, 1091, 4677, 9295, 7773, 7776, 1126, 3175, 1131, 3184, 9842, 2679, 7293, 639, 4230, 4231, 5571, 6810, 3227, 158, 2720, 6319, 3256, 2746, 7357, 4291, 2244, 7884, 7373, 6350, 8399, 1744, 2769, 9946, 2268, 7912, 9452, 7413, 247, 4053, 8448, 8982, 5915, 8476, 6439, 4908, 4402, 4405, 825, 314, 4417, 2893, 2895, 8020, 7005, 8039, 2922, 2417, 7028, 2422, 9591, 8573, 8576, 5953, 8771, 5827, 9649, 6071, 3523, 1992, 1487, 1488, 7125, 9174, 6618, 3035, 5596, 4064, 7137, 7650, 1509, 9710, 7153, 1010, 4596, 7157, 2040, 4092]) 
  m: [5888, 8712, 1553, 3092, 7706, 9247, 4640, 9761, 7721, 560, 8244, 1598, 1091, 4677, 9295, 7773, 7776, 1126, 3175, 1131, 3184, 9842, 2679, 7293, 639, 4230, 4231, 5571, 6810, 3227, 158, 2720, 6319, 3256, 2746, 7357, 4291, 2244, 7884, 7373, 6350, 8399, 1744, 2769, 9946, 2268, 7912, 9452, 7413, 247, 4053, 8448, 8982, 5915, 8476, 6439, 4908, 4402, 4405, 825, 314, 4417, 2893, 2895, 8020, 7005, 8039, 2922, 2417, 7028, 2422, 9591, 8573, 8576, 5953, 8771, 5827, 9649, 6071, 3523, 1992, 1487, 1488, 7125, 9174, 6618, 3035, 5596, 4064, 7137, 7650, 1509, 9710, 7153, 1010, 4596, 7157, 2040, 4092] 
  居然完全一样,确认了之前的想法,set底层实现和dict底层实现相似,都用了hashtable。set,map都有相同的特性,集合中元素唯一。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-373334-1-1.html 上篇帖子: Python精简学习笔记(二) -- 字符串/HTTP 下篇帖子: 关于Python RSA简陋随笔(rsa,ezPyCrypto, M2Crypto)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表