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

Python的sorted()函数:如何按照指定顺序对列表进行排序

发布时间:2023-06-14 05:36:28

Python中,可以使用sorted()函数对列表进行排序。默认情况下,sorted()函数会根据列表中元素的大小对列表进行升序排序。但是,在某些情况下,我们可能需要按照自己指定的顺序对列表进行排序。本文将介绍如何使用sorted()函数按照指定顺序对列表进行排序。

1.按照字母顺序排序

在Python中,可以使用ord()函数获取字符对应的ASCII码值。因此,可以将字符转换为ASCII码值,然后按照ASCII码值进行排序。下面是一个按照字母顺序排序的示例:

fruits = ['apple', 'banana', 'orange', 'pear']
sorted_fruits = sorted(fruits, key=lambda x: ord(x[0]))
print(sorted_fruits)

在以上代码中,使用了lambda表达式作为key参数,lambda表达式的功能是将字符串中的 个字符转换成ASCII码值,然后使用该值对列表进行排序。输出结果为:

['apple', 'banana', 'orange', 'pear']

可以看到,列表按照字母顺序进行了排序。

2.按照数字顺序排序

当需要对列表中的数字按照自定义的顺序进行排序时,可以使用一个名为key的参数。下面是一个按照数字顺序排序的示例:

numbers = [3, 5, 1, 4, 2]
sorted_numbers = sorted(numbers, key=lambda x: (x+1)%6)
print(sorted_numbers)

在以上代码中,使用了lambda表达式作为key参数,lambda表达式的功能是将列表中的元素按照(x+1)%6的结果进行排序,这样3就会排在4的前面,5会排在1的前面。输出结果为:

[1, 4, 2, 3, 5]

可以看到,列表按照数字顺序进行了排序。

3.按照自定义顺序排序

如果想按照自定义的顺序对列表进行排序,需要先将自定义顺序转换成一个字典。下面是一个按照自定义顺序排序的示例:

words = ['red', 'green', 'blue', 'yellow', 'pink']
order = {'red': 4, 'blue': 2, 'green': 3, 'yellow': 1}
sorted_words = sorted(words, key=lambda x: order[x])
print(sorted_words)

在以上代码中,首先定义了一个字典order,该字典表示了颜色的顺序。然后使用lambda表达式作为key参数,lambda表达式的功能是将列表中的元素按照其在order字典中对应的值进行排序。输出结果为:

['yellow', 'blue', 'green', 'red', 'pink']

可以看到,列表按照定义的顺序进行了排序。

4.按照多个条件排序

在某些情况下,可能需要按照多个条件对列表进行排序。例如,先按照年龄排序,然后按照姓名排序。下面是一个按照多个条件排序的示例:

students = [('john', 20), ('jane', 18), ('jim', 20), ('mary', 19)]
sorted_students = sorted(students, key=lambda x: (x[1], x[0]))
print(sorted_students)

在以上代码中,使用了lambda表达式作为key参数,lambda表达式的功能是先按照年龄进行排序,如果年龄相同,则按照姓名进行排序。输出结果为:

[('jane', 18), ('john', 20), ('jim', 20), ('mary', 19)]

可以看到,列表按照多个条件进行了排序。

总结

本文介绍了如何使用sorted()函数按照指定顺序对列表进行排序。如果需要按照字母或数字顺序排序,可以使用lambda表达式作为key参数;如果需要按照自定义顺序排序,可以先将自定义顺序转换成字典;如果需要按照多个条件排序,可以使用lambda表达式按照多个条件进行排序。希望本文能够对读者有所帮助。