python从小到大的顺序输出_「小白专栏」Python中使用for循环,为什么输出结果不是按顺序?...

欢迎各位小哥哥小姐姐阅读本的文章,对大家学习有帮助,请点赞加关注哦!!!!!!!!!!

您的点赞和关注将是我持续更新的动力呢.^v^

有不懂的问题可以私聊我哦!

前言

如图,为什么输出的不是按Jen, Sarah, Phil, Edward的顺序呢?

7dcbf8afb0be08bfe34fccb2194e946a.png

大家可以先想想为什么?

思考解答

字典是无序的了,我再具体讲讲为什么无序吧。

1。字典的查找效率很高,代价则是内存开销较大。

对于数值型元素的查找:逐个查找的算法复杂度是O(N);用MergeSort排序+二分法查找的算法复杂度是O(N*log(N));而用字典查找的算法复杂度接近O(1)。(当hash function没有冲突时)。

c189f5e3058d81dc46c62add0bd5900c.png

2。字典是怎么实现高效率查找的。

字典对key值主要做了两个处理:

  • 用hash table将key值转换成int
  • 新建了一个list,将key转化的int作为作为index,value作为该index下的element。(这就是为什么dict的开销会更大)
6b2d3f6b6bcd610e677f3b986fdd2f53.png

3。所以你print出来的顺序其实是hash table映射后的数值的顺序

但是这个hash table取决于很多其他因素,包括编译器版本、字典的增删历史等。所以实质上是non-random的。

可参考:https://docs.python.org/3/library/stdtypes.html#dictionary-view-objects

最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值