Python中的sorted函数使用方法与实例
Python中的sorted函数是一个非常有用的内置函数,它可以对列表、元组、字典等可迭代对象进行排序。在Python中,排序是一种常见的操作,比如进行分析和统计数据时,需要对数据进行排序,以便更好地进行分析。
sorted函数的语法格式如下:
sorted(iterable, key=None, reverse=False)
其中,iterable是需要进行排序的可迭代对象,key是一个函数,用来指定排序的关键字,reverse表示是否进行降序排列。
下面我们来看一下sorted函数的使用方法和实例。
1. 对列表进行排序
假设我们有一个列表,里面存储了几个整数,我们需要对它进行排序。我们可以使用sorted函数来实现:
nums = [3, 8, 1, 6, 2, 7, 5, 4] sorted_nums = sorted(nums) print(sorted_nums)
输出结果为:
[1, 2, 3, 4, 5, 6, 7, 8]
2. 对元组进行排序
sorted函数同样适用于元组的排序。与列表不同的是,元组是不可变的,因此我们需要将排序结果赋值给一个新的变量:
t = (3, 8, 1, 6, 2, 7, 5, 4) sorted_t = sorted(t) print(sorted_t)
输出结果为:
[1, 2, 3, 4, 5, 6, 7, 8]
3. 对字典进行排序
Python的字典本身是无序的,但我们可以使用sorted函数来对其进行排序。默认情况下,sorted函数会按照字典键(即key)进行排序。我们还可以使用key参数来指定排序的关键字,比如按照字典值排序:
scores = {'Tom': 85, 'John': 72, 'Jerry': 90, 'Peter': 95}
sorted_scores_by_key = sorted(scores.items())
sorted_scores_by_value = sorted(scores.items(), key=lambda x: x[1])
print(sorted_scores_by_key)
print(sorted_scores_by_value)
输出结果为:
[('Jerry', 90), ('John', 72), ('Peter', 95), ('Tom', 85)]
[('John', 72), ('Tom', 85), ('Jerry', 90), ('Peter', 95)]
4. 对字符串进行排序
字符串也是一种可迭代对象,因此我们可以使用sorted函数来对其进行排序。默认情况下,sorted函数按照字符的ASCII码进行排序。我们可以使用key参数来指定排序的关键字,比如按照字符串长度排序:
words = ['banana', 'apple', 'pear', 'orange'] sorted_words_by_ascii = sorted(words) sorted_words_by_length = sorted(words, key=len) print(sorted_words_by_ascii) print(sorted_words_by_length)
输出结果为:
['apple', 'banana', 'orange', 'pear'] ['pear', 'apple', 'orange', 'banana']
5. 对自定义对象进行排序
如果我们有一个自定义的对象,我们也可以使用sorted函数对其进行排序。我们需要在对象的类中定义一个__lt__方法,用来指定对象之间的比较规则。
class Student:
def __init__(self, name, age, score):
self.name = name
self.age = age
self.score = score
def __lt__(self, other):
return self.score < other.score # 按照成绩从低到高排序
students = [
Student('Tom', 18, 85),
Student('John', 20, 72),
Student('Jerry', 19, 90),
Student('Peter', 21, 95)
]
sorted_students = sorted(students)
for student in sorted_students:
print(student.name, student.age, student.score)
输出结果为:
John 20 72 Tom 18 85 Jerry 19 90 Peter 21 95
在上面的例子中,我们定义了一个名为Student的类,它有三个属性:name、age和score。在类中,我们定义了一个__lt__方法,它用来指定两个对象之间的比较规则。最后,我们通过在sorted函数中传入students列表来对其进行排序。
