Python-Collections模块之OrderedDict

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}

 

posted @ 2021-06-29 15:21  美女爱找茬  阅读(258)  评论(0编辑  收藏  举报