Python sorted对list和dict排序

1. 简介

Python是一种功能强大的编程语言,提供了丰富的库和工具,使得数据处理和分析变得非常简单。其中一个非常有用的库是sorted函数,它可以用来对列表(list)和字典(dict)进行排序。本文将详细介绍如何使用Python的sorted函数对list和dict进行排序。

2. 对list排序

2.1 按照默认顺序排序

对一个list进行排序,最简单的方法是使用sorted函数,并且不指定任何参数。默认情况下,sorted函数会按照元素的默认排序规则进行排序,对于数字,是按照升序排序;对于字符串,是按照字母顺序排序。

numbers = [3, 1, 4, 2, 4, 1]

sorted_numbers = sorted(numbers)

print(sorted_numbers) # 输出 [1, 1, 2, 3, 4, 4]

fruits = ['banana', 'apple', 'orange', 'grape']

sorted_fruits = sorted(fruits)

print(sorted_fruits) # 输出 ['apple', 'banana', 'grape', 'orange']

排序后的list会创建一个新的list,而不会改变原始的list。可以通过将排序后的结果赋值给一个新的变量来存储排序后的list。

2.2 按照自定义顺序排序

在某些情况下,我们可能希望按照自定义的顺序对list进行排序。可以通过指定一个可调用对象(如函数或lambda表达式)作为sorted函数的key参数来实现这个目的。

fruits = ['banana', 'apple', 'orange', 'grape']

sorted_fruits = sorted(fruits, key=lambda x: len(x))

print(sorted_fruits) # 输出 ['grape', 'apple', 'banana', 'orange']

在上述示例中,我们使用了一个lambda表达式作为key参数来指定排序规则。lambda表达式根据每个元素的长度来进行排序。

2.3 按照多个条件排序

有时候我们希望按照多个条件对list进行排序,例如首先按照某个属性升序排序,然后按照另一个属性降序排序。可以使用多个key参数来实现多个条件的排序。

students = [

{'name': 'Alice', 'score': 85, 'age': 20},

{'name': 'Bob', 'score': 76, 'age': 22},

{'name': 'Cindy', 'score': 90, 'age': 21}

]

sorted_students = sorted(students, key=lambda x: (x['score'], -x['age']))

print(sorted_students)

# 输出 [{'name': 'Bob', 'score': 76, 'age': 22}, {'name': 'Alice', 'score': 85, 'age': 20}, {'name': 'Cindy', 'score': 90, 'age': 21}]

在上述示例中,我们使用了一个lambda表达式作为key参数,并且使用了元组来指定排序的多个条件。首先按照分数升序排序,然后按照年龄降序排序。

3. 对dict排序

3.1 按照键(key)进行排序

与对list排序类似,对字典进行排序也非常简单。默认情况下,对字典排序会按照键(key)进行排序。

my_dict = {'banana': 3, 'apple': 1, 'orange': 2}

sorted_dict = dict(sorted(my_dict.items()))

print(sorted_dict)

# 输出 {'apple': 1, 'banana': 3, 'orange': 2}

在上述示例中,我们使用sorted函数对字典的items(键值对)进行排序,然后通过dict函数将排序后的结果转换回字典。

3.2 按照值(value)进行排序

有时候我们需要按照字典的值来进行排序。可以通过指定一个可调用对象作为sorted函数的key参数,并且在可调用对象中使用字典的值来进行排序。

my_dict = {'banana': 3, 'apple': 1, 'orange': 2}

sorted_dict = dict(sorted(my_dict.items(), key=lambda x: x[1]))

print(sorted_dict)

# 输出 {'apple': 1, 'orange': 2, 'banana': 3}

在上述示例中,我们使用了一个lambda表达式作为key参数,并且指定了字典的值作为排序规则。

3.3 按照多个条件进行排序

对于字典,我们也可以按照多个条件进行排序。可以使用多个key参数来指定排序的多个条件。

students = [

{'name': 'Alice', 'score': 85, 'age': 20},

{'name': 'Bob', 'score': 76, 'age': 22},

{'name': 'Cindy', 'score': 90, 'age': 21}

]

sorted_students = sorted(students, key=lambda x: (x['score'], -x['age']))

print(sorted_students)

# 输出 [{'name': 'Bob', 'score': 76, 'age': 22}, {'name': 'Alice', 'score': 85, 'age': 20}, {'name': 'Cindy', 'score': 90, 'age': 21}]

在上述示例中,我们使用了一个lambda表达式作为key参数,并且使用了元组来指定排序的多个条件。首先按照分数升序排序,然后按照年龄降序排序。

4. 总结

在本文中,我们详细介绍了如何使用Python的sorted函数对list和dict进行排序。对于list,可以按照默认顺序排序,也可以按照自定义顺序排序;对于dict,可以按照键进行排序,也可以按照值进行排序。此外,我们还介绍了如何按照多个条件进行排序。

通过合理使用sorted函数,可以轻松实现对list和dict的排序需求。不同的排序方式可以根据具体的需求自由选择。

后端开发标签