Python-Collections模組之OrderedDict
阿新 • • 發佈:2021-06-29
OrderedDict : dict的子類,可以記住元素的新增順序
一、OrderedDict: 類似於正常的詞典,只是它記住了元素插入的順序,當在有序的詞典上迭代時,返回的元素就是它們第一次新增的順序(人話:給字典排序,至於規則,自己定,可以按照key的首字母從a-z排序,也可以按照value的大小排,也可以按照長度排)
from collections import OrderedDict d = {"banana":3,"apple":2,"pear":1,"orange":4} #按照key排序(實用場景:通常做介面測試時,會對請求的引數名進行升序排列,然後再將所有引數值組合以key=value的形式拼成# 一個新的字串,不同引數之間以'&'連線且沒有任何分隔符,最後MD5簽名) a = OrderedDict(sorted(d.items(),key=lambda x:x[0])) print(a) #執行結果: OrderedDict([('apple', 2), ('banana', 3), ('orange', 4), ('pear', 1)]) print(dict(a)) #執行結果:{'apple': 2, 'banana': 3, 'orange': 4, 'pear': 1} #按照value排序 d = {"banana":3,"apple":2,"pear":1,"orange":4} a = OrderedDict(sorted(d.items(),key=lambda x:x[1])) print(a) #執行結果: OrderedDict([('pear', 1), ('apple', 2), ('banana', 3), ('orange', 4)]) print(dict(a)) #執行結果:{'pear': 1, 'apple': 2, 'banana': 3, 'orange': 4} #按照key的長度排序 d = {"banana": 3, "apple": 2, "pear": 1, "orange":4} a= OrderedDict(sorted(d.items(),key=lambda x: len(x[0]))) print(a) #執行結果: OrderedDict([('pear', 1), ('apple', 2), ('banana', 3), ('orange', 4)]) #刪除一個元素(在排好序的基礎上再刪除元素時,保持排序,且順序不變) d = {"banana": 3, "apple": 2, "pear": 1, "orange":4} a = OrderedDict(d) del a['apple'] print(a) #執行結果: OrderedDict([('banana', 3), ('pear', 1), ('orange', 4)]) #增加一個元素(在排好序的基礎上再增加元素時,不能保持排序,並預設加到末尾) d = {"banana": 3, "apple": 2, "pear": 1, "orange":4} a = OrderedDict(d) d['cherry'] = 5 print(d) #執行結果:{'banana': 3, 'apple': 2, 'pear': 1, 'orange': 4, 'cherry': 5} #修改一個元素 d = {"banana": 3, "apple": 2, "pear": 1, "orange":4} a = OrderedDict(d) a['apple'] = 9 print(dict(a)) #執行結果:{'banana': 3, 'apple': 9, 'pear': 1, 'orange': 4}