Python字典max函数key参数与取值逻辑相关问题求助
代码参考
square = {2: 4, -3: 9, -1: 1, -2: 4} key1 = max(square) print(key1) # 2 key2 = max(square, key = lambda k: square[k]) print(key2) # -3 key3 = square[key2] print(key3) # 9
Q1 解答
- 首先明确基础逻辑:Python中直接迭代字典时,默认遍历的是字典的所有键,
max(square)没有指定key参数时,会直接比较所有键的数值大小,2是所有键里最大的,所以返回2,也就是你看到的key1的输出结果。 square[k]的作用是取字典square中键k对应的的值。max的key参数作用是指定「计算比较值的规则」:你传入lambda k: square[k]时,max会把每个键k对应的值拿出来做比较,几个键对应的值分别是2→4、-3→9、-1→1、-2→4,最大的值是9,对应的键是-3,所以key2输出-3。- 你把lambda里的
k移除后,lambda表达式变成lambda k: square,也就是不管传入的键k是什么,都返回整个square字典对象,所有键对应的比较值都是同一个对象,max找不到更大的比较值,就会默认返回原始键里最大的那个,结果自然和key1一致。
Q2 解答
key2的输出结果是-3,square[key2]就是字典的取值操作:用键-3去字典square里找对应的值,字典里-3对应的value就是9,所以key3最终输出9。
内容的提问来源于stack exchange,提问作者NewCoder
相关产品推荐
相关产品推荐

