python的collection系列-有序字典(OrderedDict)


orderdDict是對字典類型的補充,他記住了字典元素添加的順序

注意:字典默認循環只輸出key

 1 import collections
 2 dic = collections.OrderedDict()
 3 dic["k1"] = "v1"
 4 dic["k2"] = "v2"
 5 dic["k3"] = "v3"
 6 print(dic)
 7 #實現原理:相當於用列表(有序)來維護字典(無序)排序,以下僅供理解
 8 # dic = {"k1":"v1","k2":"v2"}
 9 # li = ["k1","k2"]
10 # for i in li:
11 #     print(dic.get(i))
12 
13 執行結果:無論執行多少次結果一樣
14 OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
1 def popitem(self, last=True): 2         '''od.popitem() -> (k, v), return and remove a (key, value) pair. 3  Pairs are returned in LIFO order if last is true or FIFO order if false.
 1 #有序刪除和指定刪除
 2 import collections
 3 dic = collections.OrderedDict()
 4 dic["k1"] = "v1"
 5 dic["k2"] = "v2"
 6 dic["k3"] = "v3"
 7 print(dic)
 8 dic.popitem()    #有序拿掉,每次拿掉最后一個,相當於內存的棧存放,后進先出原則,而pop()就是強制拿出指定的值
 9 print(dic)
10 
11 執行結果:
12 OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
13 OrderedDict([('k1', 'v1'), ('k2', 'v2')])
1 def move_to_end(self, key, last=True): 2         '''Move an existing element to the end (or beginning if last==False). 3 
4  Raises KeyError if the element does not exist. 5  When last=True, acts like a fast version of self[key]=self.pop(key).
 1 #把指定鍵值移到最后
 2 import collections
 3 dic = collections.OrderedDict()
 4 dic["k1"] = "v1"
 5 dic["k2"] = "v2"
 6 dic["k3"] = "v3"
 7 print(dic)
 8 dic.move_to_end("k1")    #把指定鍵值移到最后
 9 print(dic)
10 
11 #執行結果:
12 OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
13 OrderedDict([('k2', 'v2'), ('k3', 'v3'), ('k1', 'v1')])
1 def setdefault(self, key, default=None): 2         'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od'
3         if key in self: 4             return self[key] 5         self[key] = default 6         return default
 1 #添加默認鍵
 2 import collections
 3 dic = collections.OrderedDict()
 4 dic["k1"] = "v1"
 5 dic["k2"] = "v2"
 6 dic["k3"] = "v3"
 7 print(dic)
 8 dic.setdefault("k4","v4")    #默認鍵值為None,不過可以添加值
 9 print(dic)
10 
11 #執行結果:
12 OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
13 OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3'), ('k4', 'v4')])

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM