python 字典為什麼是無序的

2021-07-11 10:26:58 字數 788 閱讀 8219

那本書都寫了啥...(以下用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會自動擴容字典.

fastjson為什麼預設是無序的

在做專案的時候,無意間發現新增到json中的元素是無存放順序的。嚴格來說,json預設是有存放順序的,不過是採用hashcode值來排序。下面來看一段原始碼 上圖展示了建立json物件的乙個過程,可以清晰的看出,無論使用者呼叫哪個構造方法,最終都是去執行上最後這個構造方法,根據使用者傳入的第二個引數...

咿呀,字典是無序的

之前專案中有乙個需求是這樣的 足跡列表 分組是日期,要求是分頁展示 因為是分頁展示因此從伺服器返回的原始資料是以單個的商品為單位的,而不是日期為單位,這就需要客戶端自行處理分組了 客戶端的分組處理 網路請求每一頁內的資料處理 拿到資料 goodsmodel 陣列 跟上乙個做判斷,是同一天就歸到同一組...

入門python(什麼是字典?)

入門python之字典 1 字典是什麼?字典是另一種可變容器模型,且可儲存任意型別物件。字典的每個鍵值 key value 對用冒號 分割,每個對之間用逗號 分割,整個字典包括在花括號 中 格式如下所示 d 鍵必須是唯一的,但值則不必。值可以取任何資料型別,但鍵必須是不可變的,如字串,數字或元組。2...