📜  Python – 按字典值排序列表(1)

📅  最后修改于: 2023-12-03 15:04:12.735000             🧑  作者: Mango

Python - 按字典值排序列表

在 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 参数按某个或多个字典值排序列表。