📅  最后修改于: 2023-12-03 15:04:12.735000             🧑  作者: Mango
在 Python 中,有时候需要对列表按字典值进行排序。本文将介绍如何按字典值对列表进行排序。
可以使用 sorted()
函数和 key
参数按某个字典值对列表进行排序。下面是一个例子:
# 定义一个列表
students = [
{"name": "Tom", "age": 21},
{"name": "Mary", "age": 23},
{"name": "John", "age": 20}
]
# 按 age 排序
sorted_students = sorted(students, key=lambda student: student["age"])
print(sorted_students)
# 输出:[
# {'name': 'John', 'age': 20},
# {'name': 'Tom', 'age': 21},
# {'name': 'Mary', 'age': 23}
# ]
在上面的代码中,我们使用 sorted()
函数对 students
列表进行排序,排序的关键是每个学生的 age
字段。排序后,我们把结果赋值给 sorted_students
变量,并打印出来。
如果需要按多个字典值排序,可以在 key
参数中使用一个 lambda 函数返回一个元组。元组中的每个元素代表按哪个字段排序,顺序由前到后。
下面是一个示例:
# 定义一个列表
students = [
{"name": "Tom", "age": 21, "grade": "B"},
{"name": "Mary", "age": 23, "grade": "A"},
{"name": "John", "age": 20, "grade": "C"}
]
# 按 grade 升序和 age 降序排序
sorted_students = sorted(students, key=lambda student: (student["grade"], -student["age"]))
print(sorted_students)
# 输出:[
# {'name': 'Mary', 'age': 23, 'grade': 'A'},
# {'name': 'Tom', 'age': 21, 'grade': 'B'},
# {'name': 'John', 'age': 20, 'grade': 'C'}
# ]
在上面的代码中,我们使用一个 lambda 函数,将 grade
字段作为第一个排序字段,age
字段取相反数作为第二个排序字段。这样 age
就会按照降序排序。运行结果如上述。
以上就是 Python 中按字典值排序列表的方法。可以使用 sorted()
函数和 key
参数按某个或多个字典值排序列表。