You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python中key=参数文档不完善?sort方法key参数使用困惑

如何用返回字典键的函数对字典列表排序?

你遇到的问题是两个细节错误,和key参数的理解误区无关,也不是文档不完善:

错误1:key参数的传参方式错了

sort方法的key需要传入函数本身(函数对象),而不是调用函数的结果。你写的key(name_alphabetical)是在调用函数,属于语法错误,正确写法是key=name_alphabetical——用赋值符号把函数对象传给参数。

错误2:list.sort()的返回值是None

sort是原地修改列表的方法,不会返回排序后的列表。你直接print(students.sort(...))会打印None,正确步骤是先调用sort完成排序,再单独打印列表。

修正你的尝试代码

把这两个错误改过来,代码就能正常运行:

def name_alphabetical(student):
    return student["name"]
students = [
    {"name": "Hannah", "grade_average": 83},
    {"name": "Charlie", "grade_average": 91},
    {"name": "Peter", "grade_average": 85},
    {"name": "Rachel", "grade_average": 79},
    {"name": "Lauren", "grade_average": 92}
]

# 先原地排序,传函数对象给key
students.sort(key=name_alphabetical)
# 再打印排序后的列表
print(students)

关于key参数的说明

不管是max还是sort,key参数的逻辑是一致的:它接受一个函数,这个函数会被依次应用到列表的每个元素上,函数返回的值会作为这个元素的"排序依据"。你之前搜到的keys()是字典的方法,用来获取字典的所有键,和这里的key参数是完全不同的东西,别混淆就行。

运行修正后的代码,就能得到你想要的结果:

[
    {'name': 'Charlie', 'grade_average': 91}, 
    {'name': 'Hannah', 'grade_average': 83},
    {'name': 'Lauren', 'grade_average': 92},
    {'name': 'Peter', 'grade_average': 85}, 
    {'name': 'Rachel', 'grade_average': 79}
]

内容的提问来源于stack exchange,提问作者user21809407

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 06:25:21