1. 程式人生 > >collections模組中的OrderedDict與其方法popitem()

collections模組中的OrderedDict與其方法popitem()

OrderedDict 使用dict時,key是無序的。在對dict做迭代時,我們無法確定Key的順序。 如果想要保持key的順序,可以使用OrderedDict。OrderedDict的key會按照插入的順序排列,不是key本身排序。

d = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(list(d.keys()))
ds = OrderedDict()
ds['x'] = 1
ds['y'] = 2
ds['z'] = 3
print(list(ds.keys()))

輸出

['a', 'b', 'c']
['x', 'y', 'z']

OrderedDict.popitem() OrderedDict.popitem()有一個可選引數last(預設為True),當last為True時它從OrderedDict中刪除最後一個鍵值對並返回該鍵值對,當last為False時它從OrderedDict中刪除第一個鍵值對並返回該鍵值對。 不指定last(即為True)

d = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(d)
print(d.popitem())
print(d)

輸出

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

指定last為False

d = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(d)
print(d.popitem(last=False))
print(d)

輸出

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

利用OrderedDict.popitem(last=False)這個屬性,我們可以實現一個先進先出(FIFO)的dict,當容量超出限制時,先刪除最早新增的key。(具體實現就不給出了,可以自行百度)