加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python内置函数sorted()用法深入分析

发布时间:2020-12-17 17:42:39 所属栏目:Python 来源:网络整理
导读:本篇章节讲解python内置函数sorted()用法。供大家参考研究具体如下: 列表对象提供了 sort() 方法支持原地排序,而内置函数 sorted() 不支持原地操作只是返回新的列表,并不对原列表进行任何修改。 sorted() 方法可以对列表、元组、字典、range对

本篇章节讲解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=lambda x:(x['name'],-x['age'])))
[{'name': 'xuzm','age': 30},'age': 40}]
>>> phonebook = {'xuzm':'123','xuzm2':'456','xuzm3':'789'}
>>> from operator import itemgetter
>>> sorted(phonebook.items(),key=itemgetter(1))  #按字典元素的值默认进行升序排列
[('xuzm','123'),('xuzm2','456'),('xuzm3','789')]
>>> sorted(phonebook.items(),key=itemgetter(0),reverse=True)   #按字典中元素的键进行降序排序
[('xuzm3','789'),('xuzm','123')]
>>> gameresult = [['Bob',95.0,'A'],['Alan',86.0,'C'],['Mandy',83.5,['Rob',89.3,'E']]
>>> sorted(gameresult,key=itemgetter(0,1))  #按姓名升序排列,姓名相同的按分数进行升序排列
[['Alan',['Bob',key=itemgetter(1,0))  #按分数进行升序排列,分数相同的按姓名进行升序排列
[['Mandy','E'],'A']]
>>> sorted(gameresult,key=itemgetter(2,0))  #按等级升序排列,等级相同的按姓名进行升序排列
[['Bob','E']]
>>> gameresult = [{'name':'Bob','wins':10,'losses':3,'rating':75.0},{'name':'David','wins':3,'losses':5,'rating':57.0},{'name':'Carol','wins':4,{'name':'Patty','wins':9,'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,{'name': 'Patty','wins': 9,'losses': 3,'rating': 72.8},{'name': 'Bob','wins': 10,'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] for x in pairs]  #按新列表中list1的顺序筛选出新列表中的list2部分
>>> result
['else','sort','to','something']

更多关于Python相关内容可查看本站专题:《Python列表(list)操作技巧总结》、《Python字符串操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读