5. python Collections -- OrdereDict

有序字典就像普通字典同樣,但他們記住了項目插入的順序。 在迭代有序字典時,將按照首次添加鍵的順序返回項目。app

用法:ide

    class collections.OrderedDict([items])函數

        返回一個字典子類的實例,支持一般的字典方法。 測試

        OrderedDict是一個字典,它記住了鍵被首次插入的順序。 spa

        若是新條目覆蓋現有條目,則原始插入位置保持不變。 對象

        刪除一個條目並從新插入它將會把它移到最後。blog


    popitem(last=True)排序

    有序字典的popitem()方法返回並刪除(key, value)對。 ip

    若是 last 是 True 或者若是 FIFO(先進先出) 的順序爲false,則按LIFO(後進先出)順序返回鍵值對。ci

    若是last是True,則以LIFO[後進先出]的順序返回,若是爲Flase,則以FIFO[先進先出]順序返回。


    move_to_end(keylast=True)

    將現有鍵移至有序字典的任意一端。 若是last爲True(默認值),則項目移動到右側,若是last爲false,則移動到開頭。 

    若是key不存在,則引起KeyError:

image.png

    除了一般的映射方法外,有序字典還支持reverse()方法進行反向迭代。

    

    OrderedDict對象之間的等式測試是順序敏感的,而且以 list(od1.items()) == list(od2.items()) 的形式實現。

    OrderedDict對象與其餘映射(Mapping)對象之間的等式測試對常規字典對順序不敏感。

    這容許在使用常規字典的任何地方替換OrderedDict對象。

    版本3.5中更改:OrderedDict的項目,鍵和值視圖如今支持使用reversed()進行反向迭代。

    在版本3.6中更改:隨着PEP 468的接受,保留傳遞給OrderedDict構造函數和update()方法的關鍵字參數的順序。

    


OrderedDict Examples and Recipes(OrderedDict示例和食譜)

因爲有序字典會記住它的插入順序,所以它能夠與排序結合使用以建立一個排序後的字典:

image.png

    刪除條目時,新排序的字典會保持其排序順序。 可是,當添加新的密鑰時,密鑰被追加到最後,而且不會保留排序。

    建立一個有序的字典變體也很簡單,能夠記住上一次插入祕鑰的順序。若是新條目覆蓋現有條目,則會更改原始插入位置並移至結尾:

image.png

    有序字典能夠與Counter類組合使用,以便計數器記住第一次遇到的順序元素:

image.png

相關文章
相關標籤/搜索