Python sorted对list和dict排序
sorted语法
sorted(iterable,key=None,reverse=False)
参数说明:
-iterable--可迭代对象。
-key--主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
-reverse--排序规则,reverse=True降序,reverse=False升序(默认)。
返回:
-一个新list对象
sorted对字典dict排序
①按键key排序
fromoperatorimportitemgetter dict={3:'B',1:'A',2:'C'} #按key升序.items()取得3个(key,value) #lambdax:x[0]取(key,value)的key即(3,1,2) d1=sorted(dict.items(),key=lambdax:x[0],reverse=False)##按key降序itemgetter类似lambda d2=sorted(dict.items(),key=itemgetter(0),reverse=True)# #输出 print(d1,type(d1))#[(1,'A'),(2,'C'),(3,'B')] print(d2,type(d2))#[(3,'B'),(2,'C'),(1,'A')]
[(1,‘A'),(2,‘C'),(3,‘B')]
[(3,‘B'),(2,‘C'),(1,‘A')]
②按值value排序
fromoperatorimportitemgetter dict={3:'B',1:'A',2:'C'} #按value升序.items()取得3个(key,value) #lambdax:x[1]取(key,value)的value即('B','A','C') d3=sorted(dict.items(),key=lambdax:x[1],reverse=False)##按value降序itemgetter类似lambda d4=sorted(dict.items(),key=itemgetter(1),reverse=True)# print(d3,type(d3))#[(1,'A'),(3,'B'),(2,'C')] print(d4,type(d4))#[(2,'C'),(3,'B'),(1,'A')]
[(1,‘A'),(3,‘B'),(2,‘C')]
[(2,‘C'),(3,‘B'),(1,‘A')]
sorted排序list
①按一种规则排序list
fromoperatorimportitemgetter data=[('c',3,'Apple'),('d',1,'Cat'),('a',2,'Banana')] #根据字母升序 print(sorted(data,key=lambdax:x[0],reverse=False))##根据数字升序 print(sorted(data,key=lambdax:x[1],reverse=False))# #根据单词升序 print(sorted(data,key=lambdax:x[2],reverse=False))#
[('a',2,'Banana'),('c',3,'Apple'),('d',1,'Cat')]
[('d',1,'Cat'),('a',2,'Banana'),('c',3,'Apple')]
[('c',3,'Apple'),('a',2,'Banana'),('d',1,'Cat')]
②按多种规则排序list
#先按照成绩降序排序,相同成绩的按照名字升序排序: d1=[{'name':'alice','score':38},{'name':'bob','score':18},{'name':'darl','score':28},{'name':'christ','score':28}] l=sorted(d1,key=lambdax:(-x['score'],x['name'])) print(l)
[{'name':'alice','score':38},{'name':'christ','score':28},{'name':'darl','score':28},{'name':'bob','score':18}]
sorted排序list和dict的混合
先看看我们排序的有哪些类型的数据结构
####二维list排序 l1=[['Bob',95.00,'A'],['Alan',86.0,'C'],['Mandy',82.5,'A'],['Rob',86,'E']] ####list中混合字典 l2=[{'name':'alice','score':38},{'name':'bob','score':18},{'name':'darl','score':28},{'name':'christ','score':28}] ####字典中混合list d1={'Li':['M',7],'Zhang':['E',2],'Wang':['P',3],'Du':['C',2],'Ma':['C',9],'Zhe':['H',7]} ####对字典中的多维list进行排序 d2={ 'Apple':[['44',88],['11',33],['22',88]], 'Banana':[['55',43],['11',68],['44',22]], 'Orange':[['22',22],['55',41],['44',42],['33',22]] }
二维list排序
fromoperatorimportitemgetter l1=[['Bob',95.00,'A'],['Alan',86.0,'C'],['Mandy',82.5,'A'],['Rob',86,'E']] #按先按成绩号升序,再按成绩数值升序 print(sorted(l1,key=itemgetter(2,1),reverse=False)) #按先按成绩号升序,再按成绩数值降序序 print(sorted(l1,key=lambdax:(x[2],-x[1]),reverse=False))
[[‘Mandy',82.5,‘A'],[‘Bob',95.0,‘A'],[‘Alan',86.0,‘C'],[‘Rob',86,‘E']]
[[‘Bob',95.0,‘A'],[‘Mandy',82.5,‘A'],[‘Alan',86.0,‘C'],[‘Rob',86,‘E']]
2.list中混合字典
fromoperatorimportitemgetter #先按照成绩降序排序,相同成绩的按照名字升序排序: l2=[{'name':'alice','score':38},{'name':'bob','score':18},{'name':'darl','score':28},{'name':'christ','score':28}] print(sorted(l2,key=lambdax:(-x['score'],x['name']))) print(sorted(l2,key=itemgetter('score','name')))
[{‘name':‘alice',‘score':38},{‘name':‘christ',‘score':28},{‘name':‘darl',‘score':28},{‘name':‘bob',‘score':18}]
[{‘name':‘bob',‘score':18},{‘name':‘christ',‘score':28},{‘name':‘darl',‘score':28},{‘name':‘alice',‘score':38}]
3.字典中混合list
d1={'Li':['M',7],'Zhang':['E',2],'Wang':['P',3],'Du':['C',2],'Ma':['C',9],'Zhe':['H',7]} #sort返回的是list,如果需要转为dict,再sorted前面套一个dict()就可以了 print(sorted(d1.items(),key=lambdax:(x[1][1],-ord(x[1][0]))))#对字符比较需要ord。如果是'123'字符串数字可以使用int。 #print(sorted(d1.items(),key=lambdax:(x[1][1],-ord(x[1][0]))))
[(‘Zhang',[‘E',2]),(‘Du',[‘C',2]),(‘Wang',[‘P',3]),(‘Li',[‘M',7]),(‘Zhe',[‘H',7]),(‘Ma',[‘C',9])]
4.对字典中的多维list进行排序
d2={ 'Apple':[['44',88],['11',33],['22',88]], 'Banana':[['55',43],['11',68],['44',22]], 'Orange':[['22',22],['55',41],['44',42],['33',22]] } forkey,valueind2.items(): d2[key]=sorted(value,key=lambdax:(x[1],-int(x[0])))#按list第二列升序,相同则按第一列降序,参考二维list排序 print(d2)
{‘Apple':[[‘11',33],[‘44',88],[‘22',88]],‘Banana':[[‘44',22],[‘55',43],[‘11',68]],‘Orange':[[‘33',22],[‘22',22],[‘52',41],[‘44',42]]}
到此这篇关于Pythonsorted对list和dict排序的文章就介绍到这了,更多相关Pythonsorted对list和dict排序内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!