首页   注册   登录

XiiLii

V2EX 第 316391 号会员,加入于 2018-05-14 21:56:46 +08:00
微信公众号:display3d
根据 XiiLii 的设置,主题列表只有在你登录之后才可查看
XiiLii 最近回复了
261 天前
回复了 XiiLii 创建的主题 Python Python 如何恢复被删除的文件?
没有备份,就是经过平时的删除操作后文件不见了(也不在回收站),如何恢复?需要使用什么库?
2018-09-21 12:43:35 +08:00
回复了 XiiLii 创建的主题 程序员 《三体》之三体人真的有必要不远万里来侵略地球吗?
@enjoyCoding 我不喜欢最后的结局是程心和关一帆一起
2018-09-21 12:39:18 +08:00
回复了 XiiLii 创建的主题 程序员 《三体》之三体人真的有必要不远万里来侵略地球吗?
@MrStark 红米手机里的多看阅读
2018-09-18 21:09:46 +08:00
回复了 XiiLii 创建的主题 Python 纠正《存储 dict 的元素前是计算 key 的 hash 值?》
@thechosenone

字典本身是属于“无序序列”,这里的无序不是说每次的排列顺序都是随机排列,不是说这次输出 c, a, b,下次可能输出 b, c, a,不是这个意思

首先需要知道 dict 是基于哈希表的数据结构,哈希表是一块连续的内存空间(数组),这个数组里的元素叫做表元,表无存储的是 key-value 对,而 key-value 对具体是在这个数组里的那个位置(索引),需要使用散列函数对 key 进行 hash 值等一系列的计算才知道(这些是 Python 解释器自动完成,不需要我们主动去做)。

打个比方:key 就像一个班级里的学生,他们排在一起看起来有高有矮看起来很乱,普通人眼中的有序就是他们应该按照从高到矮或从矮到高这样的顺序排列,但是他们实质上是按照身份证号码的大小来排的,相对身份证号来说它是有序的,只是相对身高来说他们是无序的。

字典的无序也是类似的道理(不考虑散列冲突等情况),
2018-09-18 15:27:45 +08:00
回复了 XiiLii 创建的主题 Python 纠正《存储 dict 的元素前是计算 key 的 hash 值?》
@ChristopherWu 是的,我也觉得直接看源码会好很多,这样理解会更深
2018-09-18 15:25:39 +08:00
回复了 XiiLii 创建的主题 Python 纠正《存储 dict 的元素前是计算 key 的 hash 值?》
@zhengxiaowai 是的,你说的第 2 点我有了解过,这里没讲这么详细是因为我这篇文章主要是纠正我之前的错误认识,hash 是对 key,不是对 key 内存地址,关于你说的第 1 点我没了解过,感谢分享哈
2018-09-18 14:56:14 +08:00
回复了 XiiLii 创建的主题 Python 纠正《存储 dict 的元素前是计算 key 的 hash 值?》
@bwangel 谢谢哈
2018-09-18 14:55:48 +08:00
回复了 XiiLii 创建的主题 Python 纠正《存储 dict 的元素前是计算 key 的 hash 值?》
@oott123 我是拿其中的一个可哈希对象来作例子,纠正我之前说的错误推论
2018-09-18 14:39:30 +08:00
回复了 XiiLii 创建的主题 Python 纠正《存储 dict 的元素前是计算 key 的 hash 值?》
@vipppppp 因为那篇文章底部有帮指出错误了,这里再总结下

不好意思,是我眼花了,应该是 `hash(id('a')) - hash(id('b')) == id('a') - id('b')`
2018-09-18 14:32:25 +08:00
回复了 XiiLii 创建的主题 Python 纠正《存储 dict 的元素前是计算 key 的 hash 值?》
@simonliu2018 我之前就是被这个误导了,这是缓存被复用了
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1781 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 13ms · UTC 00:08 · PVG 08:08 · LAX 16:08 · JFK 19:08
♥ Do have faith in what you're doing.