总结python sorted函数对list、dictionary和tuple排序的行为

本文详细探讨了Python中对list、dictionary和tuple的排序过程,包括sorted函数的行为,以及在处理复杂元素如字典时如何按照值排序。通过实例展示了排序规则和适用场景。
摘要由CSDN通过智能技术生成

目录

1 对list的排序示例

结果

结论

验证

2 对dictionary的排列示例

示例1

结果

结论

示例2

结果

结论

示例3,按照value排序

结果 

结论

3 对tuple排序


sorted函数默认采用升序排列,即是说,“值比较小”的排在前面。在这个原则下,sorted函数对数字和字符串的排列行为都不难理解。假如被排序的容器,其元素不是简单的数字或者字符串,而是复杂的容器,如list dictionary或者tuple,排序行为是什么样的?

1 对list的排序示例

a = [3,1,6,8,7,4,2,5]
b = [3,1,6,7,8,4,2,5]
c = [3,1,7,6,8,4,2,5]
d = [5,1,6,8,7,4,3,2]
collection = [a,b,c,d]

res = sorted(collection)

结果

结论

 sorted函数给list排序满足下述规则:

1首先比较各个元素(每个元素是一个list)的第0个元素,第0个元素最小的放在前面,大的放在后面

2 假如两个元素的0号元素相同,则比较第1个元素,最小的放在前面,大的放在后面

3 假如1号元素也相同,则比较2号元素,依此类推....

验证

a b c d四个元素,只有d的首元素是5,其他都是3.因为5大于3,所以d排序在最后(满足第一条规则)

abc都用3开头,随后都是1,但是c的第2号元素是7,而ab的2号元素都是6,所以c排在ab之后

ab的前三个元素都相同,a的3号元素是8,b的3号元素是7,所以b排在a之前。

故最后的排列是bacd

2 对dictionary的排列示例

示例1

a = {1:'a', 3:'b', 2:'c'}
b = {1:'b', 3:'a', 2:'c'}
c = {2:'a', 3:'b', 1:'c'}
collection=[a,b,c]
res=sorted(collection)

结果

结论

容器元素是dictionary时,不能排序

示例2

a = {1:'a', 3:'b', 2:'c'}
res=sorted(a)

结果

结论

sorted函数可以排列dictionary,默认排列的依据是key,且返回值是key排序后的list 

示例3,按照value排序

直接操作dictionary来按照value排序是不可能的,只能先把dictionary转化成由tuple组成的一个list,然后对list排序

a = {1:'b', 3:'a', 2:'c'}
b = a.items()
c = sorted(b, key=lambda kv: kv[1])

结果 

结论

直接操作dictionary来按照value排序是不可能的,只能先通过items()函数把dictionary转化成由tuple组成的一个list,然后对list排序

3 对tuple排序

sorted对元组的排序与跟list的排序方法类似。只不过sorted(元组)的返回值是list,而不是tuple

示例:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值