2024-04-18 23:32:24 发布
网友
a = dict(((1,3),(0,-1),(3,21))) m = max(a, key=a.get)
有人能解释一下为什么会返回与最大值对应的键吗?这件事困扰了我好一阵子。谢谢!
字典“a”是python中的一个iterable结构。当您使用for x in a循环时,您是在循环字典中的键。
for x in a
在第二行中,max函数接受两个参数:iterable对象(a)和可选的“key”函数。关键函数将用于计算a中的项的值,其中最大的项将被返回。
示例:
>>> a = dict(((1,3),(0,-1),(3,21))) >>> for x in a: ... print x #output the value of each item in our iteration ... 0 1 3
注意这里只输出“键”。当我们把这些钥匙都交给“拿”的时候。。。
>>> a.get(0) -1 >>> a.get(1) 3 >>> a.get(3) 21
我们得到每个键的值。现在看看麦克斯是怎么工作的。
>>> b=[2, 3, 5, 6, 4] >>> max(b) 6 >>> def inverse(x): ... return 1.0 / x ... >>> max(b, key=inverse) 2
如您所见,max(默认情况下)将在iterable列表中找到最大的数字。如果我们定义“inverse”函数,它将返回b中inverse(item)最大的项。
inverse(item)
结合这两项,我们看到max(a, key=a.get)将返回a中的item,其中a.get(item)的值最大。i、 e.对应最大值的键。
max(a, key=a.get)
a
item
a.get(item)
你是在问key参数是如何工作的吗?它需要一个callable,它应用于字典中的每个元素。就你的字典而言,它只是这样做:
key
a.get(1) # 3 a.get(0) # -1 a.get(3) # 21
max然后使用键函数的结果作为比较值,因此它显然会选择返回最高值的元素,即3。
max
字典“a”是python中的一个iterable结构。当您使用
for x in a
循环时,您是在循环字典中的键。在第二行中,max函数接受两个参数:iterable对象(a)和可选的“key”函数。关键函数将用于计算a中的项的值,其中最大的项将被返回。
示例:
注意这里只输出“键”。当我们把这些钥匙都交给“拿”的时候。。。
我们得到每个键的值。现在看看麦克斯是怎么工作的。
如您所见,max(默认情况下)将在iterable列表中找到最大的数字。如果我们定义“inverse”函数,它将返回b中
inverse(item)
最大的项。结合这两项,我们看到
max(a, key=a.get)
将返回a
中的item
,其中a.get(item)
的值最大。i、 e.对应最大值的键。你是在问
key
参数是如何工作的吗?它需要一个callable,它应用于字典中的每个元素。就你的字典而言,它只是这样做:max
然后使用键函数的结果作为比较值,因此它显然会选择返回最高值的元素,即3。相关问题 更多 >
编程相关推荐