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

Python中sorted传入hashmap.get作key参数为何不报错?

问题解答

你的代码逻辑没问题,核心在于理解sorted函数的key参数和字典迭代的特性,拆解如下:

  1. 字典的默认迭代行为:
    当你直接把hashmap传给sorted时,默认遍历的是字典的键,等价于写sorted(hashmap.keys()),所以排序的原始元素是1、2、3这三个键。

  2. key参数的作用:
    key需要接收一个函数对象,而不是函数调用的结果。你传的hashmap.get就是这个函数对象——它是字典的内置方法,作用是根据键取值。
    在排序过程中,sorted会自动把每个遍历到的键(比如第一个键1)作为参数传给hashmap.get,也就是执行hashmap.get(1)得到值2,用这个值作为该键的排序依据。对所有键执行这个操作后,就会根据对应的值降序排列键。

简单说,这段代码等价于:

hashmap = {1: 2, 2: 3, 3: 1}
ans = []
# 手动模拟key的作用:给每个键绑定对应的值
sorted_items = sorted(hashmap.items(), key=lambda x: x[1], reverse=True)
for k, v in sorted_items:
    ans.append(k)

你之前的误解是把hashmap.get当成了直接调用,但实际上这里只是把方法本身传给key,由sorted帮你完成每个键的传参调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 22:37:38