欢迎访问宙启技术站
智能推送

Python中的sorted函数使用方法与实例

发布时间:2023-06-03 11:26:15

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列表来对其进行排序。