首页 > 编程知识 正文

python中的sort函数和sorted函数,python中sort函数用法

时间:2023-05-05 23:42:55 阅读:209742 作者:4828

联系:

都是排序方法

区别:

1、sort函数是应用到list上的,属于列表的成员方法,sorted可以对所有的可迭代对象进行排序操作。

2、list的sort方法返回的是对已经存在的列表进行操作,无返回值;而内建函数sorted返回的是一个新的列表,不是在原来的基础上进行操作。

3、sort的使用方法是list.sort(),sorted的使用方法是sorted(list)。 

语法: 1、sort语法

原型:list.sort(fun, key=None, reverse=Flase)

(1) 参数fun是表明此sort函数是基于何种算法进行排序的,一般默认情况下python中用的是归并排序,并且一般情况下我们是不会重写此参数的,所以基本可以忽略;

(2) 参数key用来指定一个函数,此函数在每次元素比较时被调用,此函数代表排序的规则,也就是你按照什么规则对你的序列进行排序;一般用lambda函数指定。

(3) 参数reverse指定排序规则,reverse=True(升序),reverse=Flase(降序),默认降序。

举例:

ls = list([('wo',1,9),('shi',2,6),('guo',3,7),('欣喜的自行车',4,5)])#使用默认参数进行排序,即按照元祖第一个元素进行排序(默认升序)ls.sort()print(ls)[('guo', 3, 7), ('shi', 2, 6), ('wo', 1, 9), ('欣喜的自行车', 4, 5)]#降序情况ls.sort(reverse=True)print(ls)[('欣喜的自行车', 4, 5), ('wo', 1, 9), ('shi', 2, 6), ('guo', 3, 7)]#使用匿名函数lambda重写key,按照元祖的第二个元素进行排序ls.sort(key=lambda x :(x[1]))print(ls)[('wo', 1, 9), ('shi', 2, 6), ('guo', 3, 7), ('欣喜的自行车', 4, 5)]#使用匿名函数重写key所代表的函数,先按照元组中下标为1的进行排序,#对于下标2处元素相同的,则按下标为0处的元素进行排序ls.sort(key=lambda x :(x[1],x[0]))print(ls)[('wo', 1, 9), ('shi', 2, 6), ('guo', 3, 7), ('欣喜的自行车', 4, 5)] 2、sorted语法

原型:sorted(iterable, key=None, reverse=Flase)

(1) 参数iterable是可迭代对象 

(2) 参数key用来指定一个函数,此函数在每次元素比较时被调用,此函数代表排序的规则,也就是你按照什么规则对你的序列进行排序;一般用lambda函数指定。

(3) 参数reverse指定排序规则,reverse=True(升序),reverse=Flase(降序),默认降序。

说明:sort只能对列表进行排序,而sorted可以对任何可迭代对象进行排序

字典:

1、按照key值排序

dic = {1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}sorted(dic) #默认直接对字典的键进行排序[1, 2, 3, 4, 5]#也可以这样,结果一样sorted(dic.keys())[1, 2, 3, 4, 5]

2、按照value排序

dic = {1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}sorted(dic.items(), key=lambda x : (x[1]))[(5, 'A'), (2, 'B'), (3, 'B'), (1, 'D'), (4, 'E')]

items()实际上是将dic转换成可迭代的对象(即元组),为[(1,'D'),(2,'B'),(3,'B'),(4,'E'),(5,'A')] ,items()方法将字典的元素转成了元组。注意排序后的返回值是一个list,而原字典中的名值对被转换为了list中的元组。

lis = [{"age":20,"name":"a"},{"age":25,"name":"b"},{"age":10,"name":"c"}]sorted(lis, key=lambda x :(x['age']))[{'age': 10, 'name': 'c'}, {'age': 20, 'name': 'a'}, {'age': 25, 'name': 'b'}]

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。