溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python中有序字典的特點(diǎn)是什么

發(fā)布時間:2021-06-12 16:53:22 來源:億速云 閱讀:136 作者:Leah 欄目:編程語言

Python中有序字典的特點(diǎn)是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

1. 你無法獲得第一個元素

由于字典中的元素具有特定的順序,因此獲取第一個(或第 N 個)元素應(yīng)該很容易,對吧?

不對!沒辦法直接做到。

你可能會認(rèn)為 d[0] 就是第一個元素,但并不是,它只是鍵為 0 的值,有可能是添加到字典的最后一個元素。

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

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

2. OrderedDict 有點(diǎn)不同

由于現(xiàn)在的字典是有序的,collections.OrderedDict 就沒用了,對吧?

(譯注:3.6 版本前的 dict 是無序的,但標(biāo)準(zhǔn)庫里提供了一個有序字典 OrderedDict。現(xiàn)在 dict 變有序了,那 OrderedDict  似乎是多余了?)

好像是。但是它不會被刪除,因?yàn)槟菢訒茐恼谑褂盟拇a,并且它還擁有一些常規(guī)字典沒有的方法。

另外,它們在行為上也有細(xì)微的差別。在比較是否相等時,常規(guī)字典不會考慮順序,但 OrderedDict 會:

>>> d1 = {"a": 1, "b": 2} >>> d2 = {"b": 2, "a": 1} >>> d1 == d2 True >>> list(d1) ['a', 'b'] >>> list(d2) ['b', 'a']  >>> from collections import OrderedDict >>> od1 = OrderedDict([("a", 1), ("b", 2)]) >>> od2 = OrderedDict([("b", 2), ("a", 1)]) >>> od1 == od2 False >>> list(od1) ['a', 'b'] >>> list(od2) ['b', 'a'] >>>

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI