首頁 >後端開發 >Python教學 >Python的collections模組中的OrderedDict有序字典

Python的collections模組中的OrderedDict有序字典

WBOY
WBOY原創
2016-07-22 08:56:231458瀏覽

如同這個資料結構的名稱所說的那樣,它記錄了每個鍵值對添加的順序。

d = OrderedDict()
d['a'] = 1
d['b'] = 10
d['c'] = 8
for letter in d:
  print letter

輸出:   

a
b
c

如果初始化的時候同時傳入多個參數,它們的順序是隨機的,不會按照位置順序儲存。

>>> d = OrderedDict(a=1, b=2, c=3)
OrderedDict([('a', 1), ('c', 3), ('b', 2)])

除了和正常的dict 相同的方法之外,OrderedDict 還提供了和順序相關的操作: popitem(): 傳回最後一個插入的鍵值對,如果popitem(last=False) 將傳回第一個插入的鍵值對reversed:傳回一個逆序的OrderedDict

實例
其實,OrderedDict可以看作是一個字典子類別:

import collections
print 'Regular dictionary:'
d = {}
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
for k, v in d.items():
  print k, v
print '\nOrderDict:'
d = collections.OrderedDict()
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
for k, v in d.items():
  print k, v

常規dict不會追蹤插入順序,迭代處理會根據鍵在散列表中儲存的順序來產生值。在OrderDict中則相反,它會記住元素插入的順序,並在創建迭代器時使用這個順序。

Regular dictionary:
a A
c C
b B
OrderDict:
a A
b B
c C

常規dict在檢查相等性是會查看其內容,OrderDict中也會考慮元素增加的順序。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn