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

Python中.get与.get()在数据排序中的区别及代码差异解析

字典中max()的key参数与c.get用法解析

一、两段代码的核心差异

先看第一段代码:

c = {'hello, world!': 4, 'dfjhg': 1, 'hello, world': 7}
print(max(c))

遍历字典时默认只迭代键,这段代码是在比较所有键的字符串大小(按ASCII码逐字符对比,前缀相同时长字符串更大),最终返回字符串排序最大的键,输出结果是hello, world!。

再看第二段代码:

c = {'hello, world!': 4, 'dfjhg': 1, 'hello, world': 7}
print(max(c, key=c.get))

这里通过key=c.get指定了比较依据:遍历每个键时,用c.get(键)获取对应的值,根据值的大小来比较,最终返回值最大的那个键。例子中值最大的是7,对应键为hello, world,所以输出这个结果。

二、为什么c.get不用手动传键

max()的key参数需要接收一个函数,这个函数会被自动应用到迭代的每个元素上。当你传入c.get时,本质是把字典的get方法作为函数传给了key。

max()遍历字典的每个键时,会自动把当前键作为参数传给get方法——相当于替你执行了c.get('hello, world!')、c.get('dfjhg')、c.get('hello, world'),用这些返回的值来做比较,最终选出对应值最大的键。

你可以用lambda函数写出等价效果,更直观:

max(c, key=lambda k: c.get(k))

这里lambda函数接收键k,返回对应的值,和直接传c.get的逻辑完全一致,只是写法不同。

三、额外补充:处理不存在的键

如果字典中可能存在不存在的键,c.get(k)默认返回None,此时比较会报错。你可以用lambda指定默认值:

max(c, key=lambda k: c.get(k, 0))  # 不存在的键按0处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:32:50