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

python中的sorted函数使用技巧

发布时间:2023-05-27 04:15:57

Python中的sorted函数是一个非常重要且常用的函数。它是一个内置函数,用于对列表、元组等可迭代对象进行排序。在本文中,我将介绍sorted函数的使用技巧和一些高级用法。

基础用法

sorted函数的基础用法非常简单,它接受一个可迭代对象作为参数,返回一个排序后的列表。例如:

numbers = [4, 2, 7, 3, 9, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # [1, 2, 3, 4, 7, 9]

在上面的代码中,我们对numbers列表进行了排序,sorted函数返回了一个新的排序后的列表,并将其存储在sorted_numbers变量中。

可以使用reverse=True参数使sorted函数按照相反的顺序对列表进行排序。例如:

numbers = [4, 2, 7, 3, 9, 1]
reverse_sorted_numbers = sorted(numbers, reverse=True)
print(reverse_sorted_numbers)  # [9, 7, 4, 3, 2, 1]

这将返回一个按照逆序排列的新列表。

高级用法

除了基础用法之外,sorted函数还有许多高级用法,下面将介绍其中的一些。

1. 按特定的键对列表进行排序

有时候我们需要按照某个特定的键对列表进行排序,可以使用key参数实现。例如:

students = [
    {'name': 'Tom', 'age': 18},
    {'name': 'Bob', 'age': 20},
    {'name': 'Alice', 'age': 19}
]

sorted_students = sorted(students, key=lambda x: x['age'])
print(sorted_students)
# [{'name': 'Tom', 'age': 18}, {'name': 'Alice', 'age': 19}, {'name': 'Bob', 'age': 20}]

在上面的代码中,我们使用key参数指定按照age键进行排序。lambda函数将每个字典作为参数,返回其'age'值,sorted函数将返回一个按'age'键排序后的新列表。

2. 多关键字排序

有时候我们需要按照多个关键字对列表排序,可以使用多次排序实现。例如:

students = [
    {'name': 'Tom', 'age': 18, 'score': 90},
    {'name': 'Bob', 'age': 20, 'score': 80},
    {'name': 'Alice', 'age': 19, 'score': 85},
    {'name': 'John', 'age': 18, 'score': 95}
]

sorted_students = sorted(students, key=lambda x: (x['age'], x['score']))
print(sorted_students)
# [{'name': 'John', 'age': 18, 'score': 95}, {'name': 'Tom', 'age': 18, 'score': 90},
#  {'name': 'Alice ', 'age': 19, 'score': 85}, {'name': 'Bob', 'age': 20, 'score': 80}]

在上面的代码中,我们使用key参数指定按照agescore键进行排序。lambda函数将每个字典作为参数,返回一个元组,元组中按照指定的键排序。

3. 根据自定义函数进行排序

有时候我们需要根据某种自定义函数来对列表进行排序,可以使用cmp_to_key函数实现。

例如,我们需要对一个列表中的字符串按照第n个字母进行排序:

words = ['sea', 'bed', 'sun', 'car', 'sky']

from functools import cmp_to_key

def sort_by_nth_letter(l1, l2, n):
    if l1[n] < l2[n]:
        return -1
    elif l1[n] > l2[n]:
        return 1
    else:
        return 0

sorted_words = sorted(words, key=cmp_to_key(lambda x, y: sort_by_nth_letter(x, y, 1)))
print(sorted_words) # ['bed', 'car', 'sea', 'sky', 'sun']

在上面的代码中,我们定义了一个sort_by_nth_letter函数,用于比较两个字符串的第n个字母。然后使用lambda函数将sort_by_nth_letter函数作为参数传递给cmp_to_key函数,并将其作为key参数传递给sorted函数。

结论

sorted函数是Python中非常重要且常用的函数之一。它可以对列表、元组等可迭代对象进行排序,并且有许多高级用法。掌握sorted函数的使用技巧可以帮助我们更方便地进行排序操作,提高编程效率。