有序字典就像普通字典同樣,但他們記住了項目插入的順序。 在迭代有序字典時,將按照首次添加鍵的順序返回項目。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(key, last=True)
將現有鍵移至有序字典的任意一端。 若是last爲True(默認值),則項目移動到右側,若是last爲false,則移動到開頭。
若是key不存在,則引起KeyError:
除了一般的映射方法外,有序字典還支持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示例和食譜)
因爲有序字典會記住它的插入順序,所以它能夠與排序結合使用以建立一個排序後的字典:
刪除條目時,新排序的字典會保持其排序順序。 可是,當添加新的密鑰時,密鑰被追加到最後,而且不會保留排序。
建立一個有序的字典變體也很簡單,能夠記住上一次插入祕鑰的順序。若是新條目覆蓋現有條目,則會更改原始插入位置並移至結尾:
有序字典能夠與Counter類組合使用,以便計數器記住第一次遇到的順序元素: