d.get
方法(?)对于返回键时在字典中查找值的最大值非常有用。但是我似乎无法理解或找到关于d.get
的运行方式的任何解释。据我所知:max()
迭代iterable
并返回最大迭代值。遍历dict
时,这默认为评估max
key
。
我的困惑来自d.get
和d.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
自变量分配了什么。
谢谢。
答案 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])
会做同样的事情。