2021-06-30

python中排序函数sorted的多级排序使用说明

在实验中,我们经常使用大量的编号无序的图片,这很让我们难受,于是我们就案例来说明如何使用排序函数sorted

在实验中我们就图片地址名举例说明

图片地址名为:
图片1:’/F/python/pytorch/cat.10880.jpg’
图片2:’/F/python/pytorch/cat.99880.jpg’
图片3:’/F/python/pytorch/cat.39880.jpg’
图片4:’/F/python/pytorch/cat.0.jpg’
图片5:’/F/python/pytorch/dog.10880.jpg’
图片6:’/F/python/pytorch/dog.99880.jpg’
图片7:’/F/python/pytorch/dog.39880.jpg’
图片8:’/F/python/pytorch/dog.0.jpg’

我们仅采用普通的sorted函数,代码如下:

a=['/F/python/pytorch/dog.10880.jpg','/F/python/pytorch/cat.99880.jpg','/F/python/pytorch/dog.39880.jpg','/F/python/pytorch/cat.0.jpg',
   '/F/python/pytorch/cat.10880.jpg','/F/python/pytorch/dog.99880.jpg','/F/python/pytorch/cat.39880.jpg','/F/python/pytorch/dog.0.jpg']
b=sorted(a,)
for i in b:
    print(i)

它采用的只是简单的sorted排序,按照首字母以及数字的大小,其输出结果为

/F/python/pytorch/cat.0.jpg
/F/python/pytorch/cat.10880.jpg
/F/python/pytorch/cat.39880.jpg
/F/python/pytorch/cat.99880.jpg
/F/python/pytorch/dog.0.jpg
/F/python/pytorch/dog.10880.jpg
/F/python/pytorch/dog.39880.jpg
/F/python/pytorch/dog.99880.jpg

当我们引入高级应用时,sorted(iterable, cmp=None, key=None, reverse=False),key代表排序的参数,多级排序按照逗号分隔开来,代码如下:

a=['/F/python/pytorch/dog.10880.jpg','/F/python/pytorch/cat.99880.jpg','/F/python/pytorch/dog.39880.jpg','/F/python/pytorch/cat.0.jpg',
   '/F/python/pytorch/cat.10880.jpg','/F/python/pytorch/dog.99880.jpg','/F/python/pytorch/cat.39880.jpg','/F/python/pytorch/dog.0.jpg']


b=sorted(a,key=lambda x:(int(x.split('.')[-2]),(x.split('.')[0].split('/')[-1])))
for i in b:
    print(i)

其中第一个

int(x.split('.')[-2])

代表按照’.‘进行分隔,选取倒数第二个’.'后的内容即,‘10880.jpg’,reverse=False代表按照升序排列,按照数字大小进行排列

经过数字大小排列后,cat和dog的排列顺序是没有规律的,所以我们的第二级排列选取

x.split('.')[0].split('/')[-1])

按照’.‘进行分隔,选取第一个部分内容,即’/F/python/pytorch/dog’,再以’/‘进行分隔,选取最后一部分内容进行排序,即’dog’

所以,代码的输出结果为:

/F/python/pytorch/cat.0.jpg
/F/python/pytorch/dog.0.jpg
/F/python/pytorch/cat.10880.jpg
/F/python/pytorch/dog.10880.jpg
/F/python/pytorch/cat.39880.jpg
/F/python/pytorch/dog.39880.jpg
/F/python/pytorch/cat.99880.jpg
/F/python/pytorch/dog.99880.jpg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值