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