Python中的max()表达式如何工作?

Vla*_*ala 2 python lambda max

这是代码:

a = [1,2,3,4]
b = {}
b[1] = 10
b[2] = 8
b[3] = 7
b[4] = 5
print max(a,key=lambda w: b[w])
Run Code Online (Sandbox Code Playgroud)

打印出来1.

我不明白max(a,key=lambda w: b[w])在这里如何评估; 我猜测a中的每个值,它找到相应的值b [i] by

  1. 将当前值i保存为lambda函数中的w
  2. 从b [i]中获取相应的值并将其存储在密钥中.

但那为什么它打印出1而不是11?或者为什么不打印10,因为那真的是最大数量?

unu*_*tbu 9

max(a,...)总会返回一个元素a.所以结果可能是1,2,3或4.对于每个值wa的关键值是b[w].最大键值为10,对应于w等于1.因此max(a,key=lambda w: b[w])返回1.