使用python对列表(list)进行排序,说简单也简单,说复杂也复杂,我一开始学的时候也搞不懂在说什么,只能搜索一些英文文章看看讲解,如今积累了一些经验,写在这里跟你们分享,html
1.sorted函数
首先介绍sorted函数,sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数。python
其中iterable表示能够迭代的对象,例如能够是dict.items()、dict.keys()等,key是一个函数,用来选取参与比较的元素,reverse则是用来指定排序是倒序仍是顺序,reverse=true则是倒序(从大到小),reverse=false则是顺序(从小到大),默认是reverse=false。函数
2.按照key排序
要对字典按照key排序,能够直接调用sorted函数。post
my_dict = {'lilee':25, 'age':24, 'phone':12} sorted(my_dict.keys()) 输出结果为 ['age', 'lilee', 'phone']
直接使用sorted(my_dict.keys())就能按key值对字典排序,这里是按照顺序对key值进行排序的,若是想按照倒序排序的话,只须要将reverse置为true便可。spa
sorted(my_dcit.keys(), reverse = true)
3.按照value值排序
共有三种方法能够实现将字典按照value值进行排序code
(1)key使用lambda匿名函数取value进行排序htm
d = {'lilee':25, 'wangyan':21, 'liqun':32, 'age':19} sorted(d.items(), key=lambda item:item[1]) 输出结果为 [('age',19),('wangyan',21),('lilee',25),('liqun',32)] 若是须要倒序则 sorted(d.items(), key=lambda item:item[1], reverse=True) 获得的结果就会是 [('liqun',32),('lilee',25),('wangyan',21),('age',19)]
(2)将key和value分装成元组,再进行排序对象
f = zip(d.keys(), d.values()) c = sorted(f) 输出结果为 [('age',19),('wangyan',21),('lilee',25),('liqun',32)]
咱们经过例子来详细解释一下函数sorted的具体用法:blog
-
先建立一个列表a 排序
-
-
直接使用sorted方法,返回一个列表就是排序好的
-
-
假如a是一个由元组构成的列表,这时候就麻烦了,咱们须要用到参数key,也就是关键词,看下面这句命令,lambda是一个隐函数,是固定写法,不要写成别的单词;x表示列表中的一个元素,在这里,表示一个元组,x只是临时起的一个名字,你能够使用任意的名字;x[0]表示元组里的第一个元素,固然第二个元素就是x[1];因此这句命令的意思就是按照列表中第一个元素排序 。a是一个dict ,同
-
-
按照第二个元素排序:
-
-
咱们还能够使用reverse参数实现倒序排列
-
-
python3 取消了cmp 参数,能够用functools.cmp_to_key 代替 参考:https://www.zhihu.com/question/30389643?sort=created