Python中的兩大「秘密」你知道嗎?

2021-10-10 03:22:32 字數 874 閱讀 5822

從python 3.6 開始,常規的字典會記住其插入的順序:就是說,當遍歷字典時,你獲得字典中元素的順序跟它們插入時的順序相同。

在 3.6 之前,字典是無序的:遍歷順序是隨機的。

關於有序字典,這裡有兩件令人意外的事情。

1、你無法獲得第乙個元素

由於字典中的元素具有特定的順序,因此獲取第乙個(或第 n 個)元素應該很容易,對吧?

不對!沒辦法直接做到。

你可能會認為 d[0] 就是第乙個元素,但並不是,它只是鍵為 0 的值,有可能是新增到字典的最後乙個元素。

獲得第 n 個元素的唯一方法是遍歷字典,直到取得第 n 個元素。不能根據有序索引來作隨機訪問。

這是一處列表勝過字典的地方。獲取列表的第 n 個元素是 o(1) 操作。獲取字典的第 n 個元素(即使已排序)是 o(n) 操作。

2、ordereddict 有點不同

由於現在的字典是有序的,collections.ordereddict 就沒用了,對吧?

(譯註:3.6 版本前的 dict 是無序的,但標準庫里提供了乙個有序字典 ordereddict。現在 dict 變有序了,那 ordereddict 似乎是多餘了?)

好像是。但是它不會被刪除,因為那樣會破壞正在使用它的**,並且它還擁有一些常規字典沒有的方法。

另外,它們在行為上也有細微的差別。在比較是否相等時,常規字典不會考慮順序,但 ordereddict 會

django中queryset的兩大特性

roles roleinfo.objects.all 建立查詢集的時候,是不會訪問資料庫的,直到真正的呼叫資料的時候,才會訪問資料庫,所以 roles roleinfo.objects.all 沒有真正的進行資料庫查詢的,只是建立了乙個資料庫查詢集 呼叫資料,真正的使用資料 1 迭代 2 序列化 3...

你踩到寫簡歷的兩大雷區嗎?

無中生有 有家世界500強公司進行校招時,收到了許多名校應屆生的簡歷。hr在進行第一輪簡歷篩選時就發現,來自同乙個學校同乙個班級的20幾份簡歷上都寫明自己是學生會幹部 班長副班長 難道這個班級人人都是班長?難不成這個學校的學生會幹部是批量生成的?幾年前一起企業高管偽造虛假學歷的案件就給我們敲起了警鐘...

守望先鋒中你不知道的秘密

學號 16340098 學院 資料科學與計算機學院 2對於廢鼠跟狂鼠問題 3距離不同每個人的傷害也不同我們用 形式直觀明了的表示 4對於遊戲中的一些小技巧 原文參考 有好多人反映,狂鼠好難玩呢,玩好的都是學霸,拋題運動學的超好,那麼我們就來研究一下狂鼠炸彈的拋物線軌跡。其實這只是乙個簡單的拋體運動公...