Python使用sorted对字典的key或value排序
sorted函数
sorted(iterable,key,reverse)
- iterable待排序的可迭代对象
- key对应的是个函数,该函数用来决定选取用哪些值来进行排序
- reverse反转排序
对key排序
d:dict={"p":59,"o":9,"s":5,"a":20,"z":18} li:list=sorted(d.keys()) print(li)
执行结果:
['a','o','p','s','z']
对value排序
在对value之前,先来回炉一下Python的lambda表达式
f=lambdax:x+1 print(f(5)) defff(x): returnx+1 print(ff(5))
执行结果:
6
6
以上两种方式是等价的,lambda表达式写法更简洁,一般当做匿名表达式/匿名函数使用
lambdax:y
- x为入参
- y为计算表达式,运算后返回
接下来进入到对字典的value排序正题,这里就需要使用到lambda表达式
直接对值排序
d:dict={"p":59,"o":9,"s":5,"a":20,"z":18} li:list=sorted(d.values()) print(li)
执行结果:
[5,9,18,20,59]
在包含Key的情况下对值排序
d:dict={"p":59,"o":9,"s":5,"a":20,"z":18} li:list=sorted(d.items(),key=lambdax:x[1]) print(li)
执行结果:
[('s',5),('o',9),('z',18),('a',20),('p',59)]
d.items()返回以元组形式构成的列表dict_items([('p',59),('o',9),('s',5),('a',20),('z',18)])(列表为可迭代对象)
lambdax:x[1]lambda表达式中,x为入参,每次x的值为一个d.items()中的元素(一个元组),第一个入参为('p',59)冒号后面的x[1]是运算表达式,意思是取元组中的第二个元素返回(索引为1),返回的元素即为排序的依据.所以如果需要对key进行排序,也可以在表达式里写x[0]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。