如何使用Python编写一个函数,首先根据学生的年龄(升序)对列表进行排序,然后在每个年龄段内,再根据学生的身高(降序)进行排序?
时间: 2024-12-13 14:24:30 浏览: 16
你可以使用 Python 的 `sorted()` 函数和 lambda 表达式来实现这个需求。这里的关键点是在排序时提供自定义的比较函数,以便按照两个条件(先年龄,后身高)进行排序。
以下是一个示例函数,它接受一个包含学生字典的列表,其中每个字典都有 'age' 和 'height' 两个键:
```python
def sort_students_by_age_and_height(students):
# 定义一个排序函数,先按年龄升序,如果年龄相同,则按身高降序
custom_sort = lambda x: (x['age'], -x['height'])
# 使用 sorted() 函数并指定排序函数
sorted_list = sorted(students, key=custom_sort)
return sorted_list
# 假设你有如下的学生数据
students_data = [
{'name': 'Alice', 'age': 15, 'height': 160},
{'name': 'Bob', 'age': 18, 'height': 180},
{'name': 'Charlie', 'age': 15, 'height': 170},
{'name': 'David', 'age': 18, 'height': 190}
]
# 调用函数进行排序
sorted_students = sort_students_by_age_and_height(students_data)
print(sorted_students)
```
运行这段代码后,你会得到一个按年龄升序、身高降序排列的学生列表。
阅读全文