在Python中,可以使用sorted()
函数或列表对象的sort()
方法对列表中的多个字段进行排序。这通常涉及到使用lambda
函数来定义排序的规则。
Python的sorted()
和sort()
方法都是稳定排序。
假设有一个包含学生信息的列表,每个学生是一个字典,包含姓名、年龄和成绩三个字段。现在我们想按照年龄从小到大排序,如果年龄相同,则按照成绩从高到低排序。
students = [
{'name': 'Alice', 'age': 20, 'score': 85},
{'name': 'Bob', 'age': 22, 'score': 90},
{'name': 'Charlie', 'age': 20, 'score': 95},
{'name': 'David', 'age': 22, 'score': 88},
]
# 使用sorted()函数进行排序
sorted_students = sorted(students, key=lambda x: (x['age'], -x['score']))
print(sorted_students)
# 使用sort()方法进行排序(会改变原列表)
students.sort(key=lambda x: (x['age'], -x['score']))
print(students)
key=lambda x: (x['age'], -x['score'])
:这是一个lambda函数,用于定义排序规则。首先按照年龄排序,如果年龄相同,则按照成绩的相反数排序(即成绩从高到低)。问题:排序结果不符合预期。
原因:可能是排序规则定义不正确,或者数据类型不兼容(例如,尝试对字符串和数字进行混合排序)。
解决方法:
领取专属 10元无门槛券
手把手带您无忧上云