【Python】Python sort和sorted函数

一,sorted函数的定义

sorted函数主要用来对序列(列表、元组、字典、集合、字符串)进行排序。

函数的基本语法格式如下:

list = sorted(iterable, key=None, reverse=False)  

iterable:iterable 表示指定的序列

key:key 参数可以自定义排序规则

reverse:指定排序的方式,默认值False,即升序排列

二、sorted函数实例 

例1:sorted函数对列表进行排序

list = [9,8,3,4,5]
print("排序后的列表:", sorted(list))
print("排序后原列表:", list)

排序后的列表: [3, 4, 5, 8, 9]
排序后原列表: [9, 8, 3, 4, 5]

sorted不改变原始的列表,而是生成一个新列表

 例2:sorted函数对元组进行排序

tuple = (9,8,3,4,5)
print("排序后的元组:", sorted(tuple))
print("排序后原元组:", tuple)

排序后的元组: [3, 4, 5, 8, 9]
排序后原元组: (9, 8, 3, 4, 5)

元组在sorted排序后新生成了列表,但原始的元组不变

例3:sorted函数对字典进行排序 

dict = {"99":9,"88":8,"33":3,"44":4,"55":5}
print("排序后的字典:", sorted(dict))
print("排序后原字典:", dict)

排序后的字典: ['33', '44', '55', '88', '99']
排序后原字典: {'99': 9, '88': 8, '33': 3, '44': 4, '55': 5}

默认情况下sorted函数对字典的键进行了升序排列,生成了一个新的列表。

字典按照value排序,在字典排序中,key参数指定为一个lambda表达式,表达式的返回值为指定的value值。

d = {"99":9,"88":8,"33":3,"44":4,"55":5}
print("排序后的字典:", dict(sorted(d.items(), key=lambda item: item[1])))
print("排序后原字典:", d)

排序后的字典: {'33': 3, '44': 4, '55': 5, '88': 8, '99': 9}
排序后原字典: {'99': 9, '88': 8, '33': 3, '44': 4, '55': 5}

例4:sorted函数对集合进行排序

s = {"a995","c88","a33d","c4e4","5f5"}
print("排序后的集合:", sorted(s))
print("排序后原集合:", s)

排序后的集合: ['5f5', 'a33d', 'a995', 'c4e4', 'c88']
排序后原集合: {'c4e4', 'c88', '5f5', 'a33d', 'a995'}

默认情况下的对集合的排序

s = {"a995","c88","a33d","c4e4","5f5"}
print("排序后的集合:", sorted(s,key=lambda item: len(item)))
print("排序后原集合:", s)

排序后的集合: ['5f5', 'c88', 'c4e4', 'a33d', 'a995']
排序后原集合: {'c4e4', '5f5', 'a33d', 'a995', 'c88'} 

自定义按照字符串长度排序

list = ['4006-182153-11','4006-182153-001','4006-182153-111','4006-182153-999','4006-182153-100']
print("sorted排序:",sorted(list,key=lambda item:int(item.split('-')[-1])))
print("sorted排序后:",list)
list.sort(key=lambda item:int(item.split('-')[-1]))
print("list sort排序:",list)

sorted排序: ['4006-182153-001', '4006-182153-11', '4006-182153-100', '4006-182153-111', '4006-182153-999']
sorted排序后: ['4006-182153-11', '4006-182153-001', '4006-182153-111', '4006-182153-999', '4006-182153-100']
list sort排序: ['4006-182153-001', '4006-182153-11', '4006-182153-100', '4006-182153-111', '4006-182153-999'] 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值