python sorted函数详解

本文介绍了Python内置函数sorted()的使用,强调了如何通过该函数对字典按照value进行降序排序。示例中展示了如何利用key参数指定排序依据,通过lambda匿名函数获取字典项的value进行排序。同时,解释了字典迭代时默认迭代key而非value,因此需要使用items()来获取包含value的信息。
摘要由CSDN通过智能技术生成

sorted()函数可以对可迭代对象进行排序,并且可以人为指定排序的依据以及方式。

先看下sorted() 帮助文档:

>>>help(sorted)
sorted(iterable, /, *, key=None, reverse=False)
    Return a new list containing all items from the iterable in ascending order.
A custom key <span class="token keyword">function</span> can be supplied to customize the <span class="token function">sort</span> order, and the
reverse flag can be <span class="token builtin class-name">set</span> to request the result <span class="token keyword">in</span> descending order.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

可以看出sorted()函数一共有三个参数:可迭代对象,即需要排序的对象,以及两个可选参数keyreverse
其中,key是排序的依据;reverse是指升序还是降序,默认升序列。
看下具体例子,将一个字典内容按照value从大到小排列:

exam_res = {
    'Mike':75,
    'Judy':88,
    'Cris':57
}
print(sorted(exam_res.items(),key=lambda i:i[1]))

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

输出:

[('Judy', 88), ('Mike', 75), ('Cris', 57)]

 
 
  • 1

这里可能有人有疑惑,为什么迭代对象是exam_res.items(),而不是字典本身。这里就要注意了,如果字典作为一个可迭代对象,本质上是对字典的key进行迭代;而exam_res.items()则是对字典中每一个key以及value包成的tuple进行迭代。可以测试一下:

for i in exam_res:
    print(i)

for i in exam_res.items():
print(i)

  • 1
  • 2
  • 3
  • 4
  • 5

输出:

Mike
Judy
Cris
('Mike', 75)
('Judy', 88)
('Cris', 57)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

所以,如果需要按照value进行排序,可迭代对象中必须含有value,因此需要使用exam_res.items()
还有一点需要注意,给key传入的是一个函数,该函数就是排序的依据,函数可以自定义,也可以用匿名函数,函数的入参是每一个迭代的对象,对于上面的例子而言,第一次迭代时,匿名函数的入参i = ('Mike', 75),因此i[1]就代表取value

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值