python3排序sorted(key=lambda)--实现对字典按value值排序
使⽤python对列表(list)进⾏排序,说简单也简单,说复杂也复杂,我⼀开始学的时候也搞不懂在说什么,只能搜索⼀些英⽂⽂章看看讲解,现在积累了⼀些经验,写在这⾥跟⼤家分享,
1.sorted函数
⾸先介绍sorted函数,sorted(iterable,key,reverse),sorted⼀共有iterable,key,reverse这三个参数。
其中iterable表⽰可以迭代的对象,例如可以是dict.items()、dict.keys()等,key是⼀个函数,⽤来选取参与⽐较的元素,reverse则是⽤来指定排序是倒序还是顺序,reverse=true则是倒序(从⼤到⼩),reverse=false则是顺序(从⼩到⼤),默认是reverse=false。
2.按照key排序
要对字典按照key排序,可以直接调⽤sorted函数。
my_dict = {'lilee':25, 'age':24, 'phone':12}
sorted(my_dict.keys())
输出结果为
['age', 'lilee', 'phone']
直接使⽤sorted(my_dict.keys())就能按key值对字典排序,这⾥是按照顺序对key值进⾏排序的,如果想按照倒序排序的话,只需要将reverse 置为true即可。
sorted(my_dcit.keys(), reverse = true)
3.按照value值排序
共有三种⽅法可以实现将字典按照value值进⾏排序
(1)key使⽤lambda匿名函数取value进⾏排序
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分装成元组,再进⾏排序
python中lambda怎么使用
f = zip(d.keys(), d.values())
c = sorted(f)
输出结果为
[('age',19),('wangyan',21),('lilee',25),('liqun',32)]
我们通过例⼦来详细解释⼀下函数sorted的具体⽤法:
1. 先创建⼀个列表a
2.
3. 直接使⽤sorted⽅法,返回⼀个列表就是排序好的
4.
5. 假如a是⼀个由元组构成的列表,这时候就⿇烦了,我们需要⽤到参数key,也就是关键词,看下⾯这句命令,lambda是⼀个隐函数,
是固定写法,不要写成别的单词;x表⽰列表中的⼀个元素,在这⾥,表⽰⼀个元组,x只是临时起的⼀个名字,你可以使⽤任意的名字;x[0]表⽰元组⾥的第⼀个元素,当然第⼆个元素就是x[1];所以这句命令的意思就是按照列表中第⼀个元素排序。a是⼀个dict ,同
6.
7. 按照第⼆个元素排序:
8.
9. 我们还可以使⽤reverse参数实现倒序排列
10.
11.  python3 取消了cmp 参数,可以⽤代替参考: