1、概述
sorted()函数是python自带的排序函数,只要是可迭代对象都可以用sorted函数进行排序。
sorted()函数在排序后会产生一个新的序列,原有的序列依旧存在。
函数形式
sorted(itrearble, cmp=None, key=None, reverse=False)
sorted默认是升序排序,设置reverse = True 可进行降序排序。
2、使用方法
2.1 简单使用
sorted('123456') #字符串
['1', '2', '3', '4', '5', '6']
sorted([1,4,5,2,3,6]) # 列表
[1, 2, 3, 4, 5, 6]
sorted({1:'q',3:'c',2:'g'}) #字典, 默认对字典的键进行排序
[1, 2, 3]
sorted({1:'q',3:'c',2:'g'}.keys()) #对字典的键
[1, 2, 3]
sorted({1:'q',3:'c',2:'g'}.values()) # 对字典的值
['c', 'g', 'q']
sorted({1:'q',3:'c',2:'g'}.items()) #对键值对组成的元组的列表
[(1, 'q'), (2, 'g'), (3, 'c')]
2.2 将列表中数据的某一部分作为关键字进行排序
a = ['Chr1-10.txt','Chr1-1.txt','Chr1-2.txt','Chr1-14.txt','Chr1-3.txt','Chr1-20.txt','Chr1-5.txt']
b = sorted(a, key=lambda d : int(d.split('-')[1].split('.')[0]))
print(b)
output:
['Chr1-1.txt', 'Chr1-2.txt', 'Chr1-3.txt', 'Chr1-5.txt', 'Chr1-10.txt', 'Chr1-14.txt', 'Chr1-20.txt']
按照‘-’符号后的数字的大小进行排序。
用lambda函数指定进行排序的关键字(可以事先定义好这个函数)
split分割出来的数据是字符串类型,需要将其转换为int类型,再进行排序,如果不进行int类型的转换,结果如下:
b = sorted(a, key=lambda d : d.split('-')[1].split('.')[0])
print(b)
output:
['Chr1-1.txt', 'Chr1-10.txt', 'Chr1-14.txt', 'Chr1-2.txt', 'Chr1-20.txt', 'Chr1-3.txt', 'Chr1-5.txt']
这是因为在字符串中,‘10’ < '2'。
key的形式多样,比如:
按照字符串长度进行排序
key = lambda x : len(x),
先按照第一个元素,再按照第二个元素:
key = lambda x : (x[0] , x[1])
参考:
free_mao 《python 中 sorted() 和 list.sort() 的用法》https://www.cnblogs.com/freemao/p/3869994.html