python内置函数sorted()用法深入分析
本文实例讲述了python内置函数sorted()用法。分享给大家供大家参考,具体如下:
列表对象提供了sort()方法支持原地排序,而内置函数sorted()不支持原地操作只是返回新的列表,并不对原列表进行任何修改。sorted()方法可以对列表、元组、字典、range对象等进行排序。列表的sort()方法和内置函数sorted()都支持key参数实现复杂排序要求。
#使用key来指定排序依据,先按姓名升序排序,姓名相同的按年龄降序排序 >>>persons=[{'name':'xuzm','age':10},{'name':'xuzm2','age':20},{'name':'xuzm4','age':40},{'name':'xuzm3','age':30}] >>>persons [{'name':'xuzm','age':10},{'name':'xuzm2','age':20},{'name':'xuzm4','age':40},{'name':'xuzm3','age':30}] >>>print(sorted(persons,key=lambdax:(x['name'],-x['age']))) [{'name':'xuzm','age':10},{'name':'xuzm2','age':20},{'name':'xuzm3','age':30},{'name':'xuzm4','age':40}]
>>>phonebook={'xuzm':'123','xuzm2':'456','xuzm3':'789'} >>>fromoperatorimportitemgetter >>>sorted(phonebook.items(),key=itemgetter(1))#按字典元素的值默认进行升序排列 [('xuzm','123'),('xuzm2','456'),('xuzm3','789')] >>>sorted(phonebook.items(),key=itemgetter(0),reverse=True)#按字典中元素的键进行降序排序 [('xuzm3','789'),('xuzm2','456'),('xuzm','123')]
>>>gameresult=[['Bob',95.0,'A'],['Alan',86.0,'C'],['Mandy',83.5,'A'],['Rob',89.3,'E']] >>>sorted(gameresult,key=itemgetter(0,1))#按姓名升序排列,姓名相同的按分数进行升序排列 [['Alan',86.0,'C'],['Bob',95.0,'A'],['Mandy',83.5,'A'],['Rob',89.3,'E']] >>>sorted(gameresult,key=itemgetter(1,0))#按分数进行升序排列,分数相同的按姓名进行升序排列 [['Mandy',83.5,'A'],['Alan',86.0,'C'],['Rob',89.3,'E'],['Bob',95.0,'A']] >>>sorted(gameresult,key=itemgetter(2,0))#按等级升序排列,等级相同的按姓名进行升序排列 [['Bob',95.0,'A'],['Mandy',83.5,'A'],['Alan',86.0,'C'],['Rob',89.3,'E']] >>>gameresult=[{'name':'Bob','wins':10,'losses':3,'rating':75.0}, {'name':'David','wins':3,'losses':5,'rating':57.0}, {'name':'Carol','wins':4,'losses':5,'rating':57.0}, {'name':'Patty','wins':9,'losses':3,'rating':72.8}] >>>sorted(gameresult,key=itemgetter('wins','name'))#按wins排列,wins相同的按name惊进行排列 [{'name':'David','wins':3,'losses':5,'rating':57.0},{'name':'Carol','wins':4,'losses':5,'rating':57.0},{'name':'Patty','wins':9,'losses':3,'rating':72.8},{'name':'Bob','wins':10,'losses':3,'rating':75.0}]
根据另一个列表的顺序排列一个列表
>>>list1=["what","I'm","sorting","by"] >>>list2=["something","else","to","sort"] >>>pairs=zip(list1,list2)#用zip对象压缩 >>>pairs=sorted(pairs)#新列表按照list1进行排序 >>>pairs [("I'm",'else'),('by','sort'),('sorting','to'),('what','something')] >>>result=[x[1]forxinpairs]#按新列表中list1的顺序筛选出新列表中的list2部分 >>>result ['else','sort','to','something']
更多关于Python相关内容可查看本站专题:《Python列表(list)操作技巧总结》、《Python字符串操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。