python中的sort()与sorted()
前些日子,面试某一大厂,面试官要求我对字典进行排序。由于自身学习不足,当时很懵逼,难道字典不是无序的吗?后来面试官提示可以用sorted函数,但是自己没有见过,最终没有做出来。事后,查阅了sorted函数的用法,可以说是很简单了。接下来总结一下python中sort函数与sorted函数的用法。
sort函数
sort函数很常见,它是一种列表方法,可以对原列表进行排序,从而改变原列表中的内容。用法简单清晰,如下:
如果是列表嵌列表呢?可以试试
可见,此时是按照每个子列表中的第一个数进行升序排列。
sort函数有两个可选参数,形式为sort(key=None,reverse=False)
参数reverse: 默认为False,代表升序排列,当为True时,代表降序排列。
参数key: 可以指定按照什么来排序,如果此时对上一个例子想按照子列表中的第二个数进行排序。那么就需要引入lambda函数。如下:
这里key参数的值为一个函数,此函数只有一个参数且返回一个值用来进行比较。在每个元素进行比较前,都需要调用这个函数。
如果想对此列表按照第一个元素升序,第二个元素降序,那么也是有办法的。如下:
sorted函数
不同于sort方法,sorted()方法对所有的可迭代序列都有效。sorted()方法会返回排好序的列表副本,原列表内容不变。
sorted方法可以用来对字典进行排序
默认按照字典键进行排序
当按值排序时需要加上匿名函数
返回一般不再是字典,而是元组组成的列表。
同样也可以指定升序或是降序。
补充:
operator.itemgetter函数的使用
operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号。等同于用lambda函数
根据第二个域和第三个域排序: