max()如何使用d.get?

问题描述 投票:0回答:3

d.get方法(?)非常有效地让我在返回密钥时找到字典中值的最大值。但我似乎无法理解或找到有关d.get如何运作的任何解释。据我所知:max()迭代iterable并返回最大值的迭代。当迭代dict时,这默认为评估max key

我的困惑来自d.getd.get(key)之间的区别。如何在没有()的情况下调用方法?我不确定如何调查此事。

foo = max(d, key = d.get)

weights = {
 95: 0.0,
 96: 0.0,
 97: 0.30793650793650795,
 98: 0.0,
 99: 0.0,
 100: 0.0,
 101: 0.48095238095238096,
 102: 0.0,
 103: 0.0,
 104: 0.49523809523809526,
 105: 0.0}

heaviest = max(weights, key = weights.get)
--> 104  

使用max()的可选参数,可以按value排序并返回key。我只是不明白什么被分配给key论点。

谢谢大家。

python dictionary
3个回答
1
投票

weights.get是一个函数,它返回weights中相应键的值。当max查找最大值时,它使用key参数的返回值,将输入作为参数传递。

这段代码:

heaviest = max(weights, key=weights.get)

相当于:

heaviest = max(weights, key=lambda k: weights.get(k))

甚至更明确地:

def fetchVal(key):
    return weights.get(key) # same as weights[key]

heaviest = max(weights, key=fetchVal)

当你将weights传递给max时,它会迭代字典的键。基本上,与max(weights, key=weights.get),你说:给我weights的最大关键;但是,不是使用键本身的值来确定最大值,而是使用weights中的相应值。


2
投票

d.get(k)只返回密钥k的字典中的值。

迭代字典时,迭代器返回字典键。因此,对于每个字典,max调用d.get(key)来获取相互比较的值。相当于d[key],因此它返回相应的字典元素。

最后,max返回与所有这些值的最大值对应的键。

您提供的代码相当于:

foo = max(d, key = lambda k: d[k])

0
投票

它不像max函数“key =”参数那样使用get方法,它将函数作为参数。当你告诉它max(my_dict,key = my_dict.get)

它迭代my_dict的键,将每个字典键传递给key =参数中给出的函数。并返回函数输出最高的键。

max(my_dict, key=lambda k:my_dict[k])

也会这样做。

© www.soinside.com 2019 - 2024. All rights reserved.