Python中的`sorted()`函数使用技巧总结
Python中的sorted()函数是一个常用的内置函数,用于对可迭代对象进行排序。它可以对列表、元组、字典、集合等类型的数据进行排序,并返回一个新的排序后的列表。
在本篇文章中,我将会介绍一些关于sorted()函数的使用技巧,帮助你更好地应用该函数提高工作效率。
1. 语法格式
在使用sorted()函数前,先了解它的语法格式:
sorted(iterable, key=None, reverse=False)
其中,iterable为一个可迭代对象,必选。key和reverse为可选参数,key用于指定排序中的比较函数,reverse用于控制排序顺序。
2. 键函数
key参数可以用来指定排序中的比较函数。例如,当我们对一个字典按照其中一个键的值进行排序时,可以使用如下语句:
my_dict = {"a": 1, "c": 3, "b": 2}
sorted_dict = sorted(my_dict.items(), key=lambda x: x[1])
该语句将原字典转化为了一个由元组组成的列表,并按照每个元组的第二个元素进行排序,即按照字典中的值进行排序。
这里需要注意的是,key是可调用对象,传入的是一个函数或lambda表达式。在上述例子中,lambda x: x[1]表示以每个元组的第二个元素作为比较依据进行排序。
3. 倒序排列
reverse参数可用于控制排序顺序,在默认情况下它是False,表示从小到大进行排序。当你需要从大到小进行排序时,只需将其赋值为True即可。
my_list = [3, 2, 1] sorted_list = sorted(my_list, reverse=True)
该语句将原列表按照从大到小的顺序排序。
4. 多次排序
在实际使用中,有时候需要对一个数据集进行多次排序,可以使用多级排序。
例如,我们有一个列表,每个元素是一个三元组,需要按照第一个元素升序、第二个元素降序、第三个元素升序的顺序对其进行排序,可以使用如下语句:
my_list = [(1, 3, 2), (2, 1, 4), (1, 2, 3), (2, 2, 1)] sorted_list = sorted(my_list, key=lambda x: (x[0], -x[1], x[2]))
这里我们将键函数指定为了一个元组,元组中的每个元素代表需要进行排序的级别,例如第一个元素代表第一级排序,第二个元素代表第二级排序...
注意,若希望第二级排序是降序排列,则需要在第二个元素前加上一个负号。
5. 可变对象
sorted()函数并不会改变原列表,而是返回一个新的列表。当需要对原列表进行排序时,可以使用sort()方法。
但需要特别注意的是,sort()方法是一个对原列表进行排序的方法,因此会修改原列表。而sorted()函数并不会改变原列表,所以使用sorted()函数时需要注意对象是否为可变对象。当对象是可变对象时,需要将新的排序结果重新赋值给原对象。
6. 默认值
当不传入任何参数时,sorted()函数默认使用自然排序方式进行排序。即将元素按照从小到大的顺序排列。例如:
my_list = [3, 2, 1] sorted_list = sorted(my_list)
该语句将原列表按照从小到大的顺序排列。
7. 统计元素
sorted()函数可以用于统计列表中各元素的个数,可以结合collections模块中的Counter类一起使用。
例如,对一个列表进行词频统计:
import collections my_list = ["apple", "banana", "orange", "apple", "banana"] word_count = collections.Counter(sorted(my_list))
该语句能够统计出列表中每个单词的出现次数,并将结果存储在一个字典中,例如:
{"apple": 2, "banana": 2, "orange": 1}
8. 总结
sorted()函数是一个十分常用的内置函数,在对可迭代对象进行排序时,它可以有效地提高我们的工作效率。本篇文章介绍了一些sorted()函数的使用技巧,包括键函数、倒序排列、多次排序、可变对象、默认值、统计元素等方面的内容。
有了这些技巧,相信你会更熟练地使用sorted()函数,进而提升你的编程能力和工作效率。
