日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

collections中的OrderedDict

發布時間:2024/9/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 collections中的OrderedDict 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用dict時,Key是無序的。在對dict做迭代時,我們無法確定Key的順序。而如果要保持Key的順序,可以用OrderedDict

注意,OrderedDict的Key會按照插入的順序排列,不是Key本身排序:

OrderedDict可以實現一個FIFO(先進先出)的dict,當容量超出限制時,先刪除最早添加的Key:

class LastUpdatedOrderedDict(OrderedDict):def __init__(self, capacity):super().__init__()#super(LastUpdatedOrderedDict, self).__init__()self._capacity = capacitydef __setitem__(self, key, value): containsKey = 1 if key in self else 0print('self1:',self)print('len(self):',len(self))# 如果dict容量已滿if len(self) - containsKey >= self._capacity:print('%s(len) - %s(containsKey)>= %s(self._capacity):'% (len(self),containsKey,self._capacity))# 則刪除最先添加的keylast = self.popitem(last=False)print('remove:', last)print('self2:',self)# 檢查dict里是否已經存在要增加的(key,value)中的keyif containsKey:# 刪除原來的keydel self[key]print('set:', (key, value))print('self3:',self)# 如果dict中沒有要添加的keyelse:print('add:', (key, value))print('self4:',self) OrderedDict.__setitem__(self, key, value)print('self5:',self)dic=LastUpdatedOrderedDict(2) dic['a']=1 print('.......') dic['b']=2 print('.......') dic['c']=3 print('.......') dic['b']=6

結果:

........................................ self1: LastUpdatedOrderedDict() len(self): 0 add: ('a', 1) self6: LastUpdatedOrderedDict() self7: LastUpdatedOrderedDict([('a', 1)]) ....... self1: LastUpdatedOrderedDict([('a', 1)]) len(self): 1 add: ('b', 2) self6: LastUpdatedOrderedDict([('a', 1)]) self7: LastUpdatedOrderedDict([('a', 1), ('b', 2)]) ....... self1: LastUpdatedOrderedDict([('a', 1), ('b', 2)]) len(self): 2 2(len) - 0(containsKey)>= 2(self._capacity): remove: ('a', 1) self3: LastUpdatedOrderedDict([('b', 2)]) add: ('c', 3) self6: LastUpdatedOrderedDict([('b', 2)]) self7: LastUpdatedOrderedDict([('b', 2), ('c', 3)]) ....... self1: LastUpdatedOrderedDict([('b', 2), ('c', 3)]) len(self): 2 set: ('b', 6) self5: LastUpdatedOrderedDict([('c', 3)]) self7: LastUpdatedOrderedDict([('c', 3), ('b', 6)]) ........................................

從運行結果可以理清思路

總結

以上是生活随笔為你收集整理的collections中的OrderedDict的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。