max()如何使用d.get?

时间:2019-01-03 21:50:50

标签: python dictionary

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自变量分配了什么。

谢谢。

3 个答案:

答案 0 :(得分:2)

d.get(k)只需在字典中返回键k的值。

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

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

您提供的代码等效于:

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

答案 1 :(得分: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 :(得分:0)

get方法不如max函数“ key =”参数那样,后者以一个函数作为参数。 当你告诉它     max(my_dict,key = my_dict.get)

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

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

会做同样的事情。