【Python】sorted函数的使用

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

猜你喜欢

转载自blog.csdn.net/wangxiao7474/article/details/78867759