您的位置:首页 > 编程语言 > Python开发

python 字典为什么是无序的?

2016-04-25 15:48 495 查看
作者:林诚

链接:https://www.zhihu.com/question/24306558/answer/27358613

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

那本书都写了啥...(以下用Hash 简称 Hash Table)

Hash的思想很简单, 就是跟 index sorting 一个内核, 申请一个Array, 并将Array的位置作为一种元数据

在 index 排序的时候, 很朴素的, 数值的大小就是 放入array的位置,

举个例子 我有int A[6], 我要排序 2 5 4 8

将这些数分别放入Array的2 5 4 8位, 然后按顺序读出, 数列就以O(n)的速度排列完了

Hash 和 Index 不同的是,

数值到Array位置的映射是不一样的, 在Index sorting中, 数值在Array的位置就是数值本身

在Hash中, 是变化的算法, 用Key算出在Array的位置, 放入Value

比如我的Key是10, 在Hash中, 可能会把Value放到Array位置2上

在这种算法下, 插入顺序是不可估计的.

第一次操作, Key 2 Value 90 插入到 Hash Table A, 算出来位置是 5

第二次操作, Key 9 Value 10 插入到 Hash Table A, 算出来位置是 3

你发现了没有, Hash Table根本不保证插入的顺序

后来的数据是可以跑到先插入的数据前面去的.

Hash的本质是, 将一数列作为Key尽量平均分配另一个数列Value到程序已经申请好的Array上.

最后说点无关的, 也会导致字典乱序的原因.

Python会自动扩容字典.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: