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

时间:2009-12-16 03:01:13

标签: 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])

打印出1

我不明白max(a,key=lambda w: b[w])如何在这里被评估;我猜测a中的每个值,它通过

找到相应的值b [i]
  1. 将当前值i保存为lambda函数中的w
  2. 从b [i]获取相应的值并将其存储在密钥中。
  3. 但是为什么它会打印1而不是11?或者为什么不打印10,因为那真的是最大数量?

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:-3)

尝试:

a = [1,2,3,4]
b = {}
b[1] = 10
b[2] = 8
b[3] = 7
b[4] = 5
c = a + b.values()
print max(*c)