字典及列表类型的排序和pop删除

Python字典及列表排序

针对字典的排序,使用sorted函数实现,具体方式如下:

sorted(dic,value,reverse)
dic为比较函数,value 为排序的对象(这里指键或键值),
reverse:注明升序还是降序,True–降序,False–升序(默认)

可以分别根据字典的key和value完成排序过程,典型的方法包括两种方式(注意:对字典排序后的结果变为列表类型,后期操作需按照列表类型进行):
一、按字典值value排序(默认为升序)
1.通过operator.itemgetter函数

import operator  
a = {1:2, 3:4, 4:3, 2:1, 0:0}  
resultA = sorted(a.iteritems(), key=operator.itemgetter(1),reverse=False)  #升序,默认可去掉
print(resultA)  
#结果为[(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]  
resultD = sorted(a.iteritems(), key=operator.itemgetter(1), reverse=True)  #降序
print(resultD)  
#结果为[(3, 4), (4, 3), (1, 2), (2, 1), (0, 0)]  
#或者直接使用list的reverse方法将resultA顺序反转  
resultA.reverse()  

2.通过lambda函数

resultA = sorted(a.iteritems(), key=lambda a:a[1],reverse=False)   #升序
print(resultA)  
#结果为:[(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]  
resultD = sorted(a.iteritems(), key=lambda a:a[1], reverse=True)  #降序
print(resultD)  
结果为:[(3, 4), (4, 3), (1, 2), (2, 1), (0, 0)]  

二、按字典值key排序(默认为升序)

a={1:'c',2:'b',3:'a'}
resultD= sorted(a.items(),key=lambda a:a[0],reverse=True)  #降序
print(resultD)
print(a)
#结果为:[(3, 'a'), (2, 'b'), (1, 'c')]
        {1:'c',2:'b',3:'a'}  #排序之后原字典没有变,顺序依旧

对Python的列表(list)有两个用于排序的方法:
一个是内建方法list.sort(),可以直接改变列表的内容:

list1 = [9,8,7,6,5]
list1.sort()
list1
#结果为:[5, 6, 7, 8, 9]

另一个是内建函数sorted(),它的特点是不改变原列表的内容,而是根据一个可迭代对象建立一个新的列表:

list2 = [4,3,2,1]
list3 = sorted(list2)
list2
#结果为:[4, 3, 2, 1]
list3
#结果为:[1, 2, 3, 4]

列表中元素为turple(元组)的形式进行排序

stu_grade = [('john', 'A', 5),('tome', 'B', 7),('dave', 'B', 2)]
mm=sorted(stu_grade, key=lambda dd: dd[2],reverse=True)   # 降序,不改变列表
print(mm)
#结果为:[('tome', 'B', 7), ('john', 'A', 5), ('dave', 'B', 2)]

字典排序后保留字典类型

demo_dict = {'a':300,'c':100,'b':200}
list_1 = list(demo_dict.items())
// 对字典按照key值进行排序,并返回排序后的新字典
demo_dict_sortbykey = dict(sorted(list_1,key = lambda x:x[0]))

demo_dict_sortbyvalue = dict(sorted(demo_dict.items(),key = lambda x:x[1],reverse= False))  #按值升序
结果
list_1:[('a', 300), ('c', 100), ('b', 200)]
demo_dict_sortbykey: {'a': 300, 'b': 200, 'c': 100}
demo_dict_sortbyvalue: {'c': 100, 'b': 200, 'a': 300}

pop方法在列表与字典中的区别

Python 字典使用pop(key[,default])方法删除字典给定键 key 所对应的值,有返回值,返回被删除的值。key值必须给出。 否则,返回default值

a={1:'c',2:'b',3:'a'}
pop_obj=a.pop(1)   #返回删除字典数据的value
print(pop_obj,a)
#结果为:c   {2: 'b', 3: 'a'}

Python 列表使用list.pop([index=-1]) 函数用于移除列表中的一个元素(默认最后一个元素),并且有返回值,返回该元素的值。

t = ['a','b','c']
pop_obj=t.pop()
print (pop_obj,t)
t.pop(1)
print (t)
#结果为:c,['a', 'b']
        b,['a']

因此,想要列表的删除操作与字典的类似,可以选用remove()实现,该方法无返回值,会移除列表中的某个值的第一个匹配项。

t = ['a', 'b', 'c', 'd']
t.remove('a')
print (t)
t.remove('c')
print (t)
#结果为:['b', 'c', 'd']
         ['b', 'd']

对字典类型排序完毕后取最大值方法:

dd= {'a':300,'c':100,'b':200}
sortdict=sorted(dd.items(),key=lambda x:x[1],reverse= False)  #升序排列后已经变成列表,依次取列表最后元素的key值
u=sortdict.pop()[0] 
print(u,sortdict)
#结果为:a [('c', 100), ('b', 200)]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值