collections模組中的OrderedDict與其方法popitem()
阿新 • • 發佈:2018-12-12
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。(具體實現就不給出了,可以自行百度)