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

WBOY
發布: 2016-07-22 08:56:23
原創
1422 人瀏覽過

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

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中也會考慮元素增加的順序。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板