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

使用MYDICT.get作为字典排序键的作用及sorted(MYDICT, key=MYDICT.get)的差异

嘿,这个问题问到点子上了,我来给你拆解明白~

用MYDICT.get作为字典排序键的作用

当你把MYDICT.get传给sorted()的key参数时,本质是告诉排序函数:不要用元素本身来排序,而是用这个元素作为字典的键,去取对应的值,用这个值来做排序依据。

举个实际的例子就懂了:

MYDICT = {'apple': 5, 'banana': 2, 'cherry': 7}

当执行sorted(MYDICT, key=MYDICT.get)时,排序函数会遍历字典的每个键(也就是'apple'、'banana'、'cherry'),对每个键调用MYDICT.get(key)拿到对应的值:5、2、7,然后按照这些值的大小对键进行排序,最终得到的结果是['banana', 'apple', 'cherry']。

另外,get方法还有个隐藏优势:如果你的可迭代对象里存在字典中没有的键(不过在sorted(MYDICT)这种场景下不会出现,因为遍历的就是字典自身的键),可以通过MYDICT.get(key, 默认值)来指定默认排序值,避免抛出KeyError,比如key=lambda k: MYDICT.get(k, 0)。

sorted(MYDICT, key=MYDICT.get) 和直接排序的区别

直接调用sorted(MYDICT)时,排序的依据是字典键本身的字典序,和字典的值完全没关系。还是用上面的例子:

sorted(MYDICT)  # 输出 ['apple', 'banana', 'cherry']

这是因为字符串的字典序里,'apple'在'banana'前面,'banana'又在'cherry'前面,完全是按键的字母顺序排的。

而加上key=MYDICT.get之后,排序逻辑就变成了按键对应的值的大小顺序来排列键,值小的键排前面,值大的排后面(如果要倒序可以加reverse=True)。

总结一下核心差异:

  • 直接排序:以字典的键本身为排序依据,遵循键的自然顺序(比如字符串的字典序、数字的大小序)
  • 用MYDICT.get作为key:以字典键对应的值为排序依据,按值的顺序来排列键

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:10:55