python——sort方法、sorted函数——排序


sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort 方法没有返回值,但是会对列表的对象进行排序,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

一、sort方法

描述
sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。

语法
sort()方法语法:

list.sort( key=None, reverse=False)

参数
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

返回值
该方法没有返回值,但是会对列表的对象进行排序。

实例

# 列表
vowels = ['e', 'a', 'u', 'o', 'i']
 
# 降序
vowels.sort(reverse=True)
 
# 输出结果
print ( '降序输出:', vowels )
降序输出: ['u', 'o', 'i', 'e', 'a']
# 获取列表的第二个元素
def takeSecond(elem):
    return elem[1]
 
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
 
# 指定第二个元素排序
random.sort(key=takeSecond)
 
# 输出类别
print ('排序列表:', random)

排序列表:[(4, 1), (2, 2), (1, 3), (3, 4)]

二、sorted方法

描述:sorted() 函数对所有可迭代的对象进行排序操作。

sorted语法:sorted(iterable, key=None, reverse=False)  

参数:
1.iterable -- 可迭代对象。
2.key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
3.reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)

返回值:
返回重新排序的可迭代对象

实例
通过字典中的value来进行数组/字典的排序

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

[{'age': 10, 'name': 'c'}, {'age': 20, 'name': 'a'}, {'age': 25, 'name': 'b'}]

根据字典中的value进行排序,也可以这么做

sortedClassCountDict = sorted(classCountDict.items(),key=operator.itemgetter(1),reverse=True)

先按照成绩降序排序,相同成绩的按照名字升序排序(-表示降序排序)

d1 = [{'name':'alice', 'score':38}, {'name':'bob', 'score':18}, {'name':'darl', 'score':28}, {'name':'christ', 'score':28}]
l = sorted(d1, key=lambda x:(-x['score'], x['name']))
print(l)

[{'name': 'alice', 'score': 38}, {'name': 'christ', 'score': 28}, {'name': 'darl', 'score': 28}, {'name': 'bob', 'score': 18}]
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值