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

发布于 2024-08-14 17:02:23 字数 375 浏览 1 评论 0原文

代码如下:

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 中的每个值 i,它通过将

  1. i 的当前值保存为 lambda 函数中的 w 来
  2. 找到相应的值 b[i] ,从 b[i] 获取相应的值并将其存储在 key 中。

但为什么它打印出 1 而不是 11 呢?或者为什么它不打印出 10,因为这确实是最大数字?

Here's the code:

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])

This prints out 1.

I don't understand how max(a,key=lambda w: b[w]) is being evaluated here though; I'm guessing for each value i in a, it finds the corresponding value b[i] by

  1. saving the current value of i as w in the lambda function
  2. getting the corresponding value from b[i] and storing it in key.

But then why does it print out 1 instead of 11? Or why doesn't it print out 10, since that's really the maximum number?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

末蓝 2024-08-21 17:02:23

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

max(a,...) is always going to return an element of a. So the result will be either 1,2,3, or 4.
For each value w in a, the key value is b[w]. The largest key value is 10, and that corresponds with w equalling 1. So max(a,key=lambda w: b[w]) returns 1.

心奴独伤 2024-08-21 17:02:23

尝试:

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)

Try:

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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文