[转]Python3之max key参数学习记录
Python3之max key参数学习记录
转自https://www.cnblogs.com/zhangwei22/p/9892422.html
今天用Python写脚本,想要实现这样的功能:对于给定的字典,返回其中Value最大值对应的Key。
搜索后找到了解决方法,同时也学到了max key参数的作用。
例1,
1
2
|
testlist = [ 9.2 , 10 , - 20.3 , - 7.0 , 9.999 , 20.111 ] print ( max (testlist, key = abs )) #返回 -20.3 |
获取testlist中绝对值最大的元素。
key关键字的作用是,对每个testlist元素先使用key指定的function来处理,然后再比较、返回预期的元素。
key参数的值也可以使用自定义函数。
例2,
1
2
3
4
|
def func(n): return abs (n)<br> testlist = [ 9.2 , 10 , - 20.3 , - 7.0 , 9.999 , 20.111 ] print ( max (testlist, key = func)) #结果与例1一致 |
该func是自定义的函数。
对于简单的方法,一般使用lambda函数。
例3,
1
2
|
testlist = [ 9.2 , 10 , - 20.3 , - 7.0 , 9.999 , 20.111 ] print ( max (testlist, key = lambda x: abs (x))) #结果与例1、例2一致 |
使用lambda函数作为key的参数。
例4,
1
2
3
|
probabilities_dict = { 'Sunny' : 0.30 , 'Cloudy' : 0.35 , 'Windy' : 0.15 , 'Rainy' : 0.20 } print ( max (probabilities_dict, key = lambda x: probabilities_dict[x])) #返回 Cloudy print ( max (probabilities_dict, key = probabilities_dict.get)) #返回 Cloudy |
这里,对于probabilities_dict字典的每一个元素(即字典的Key),使用key参数指定的方法进行处理,然后再比较、返回预期的字典Key。
下面的这句依次打印字典的Key、dict.get(Key)的值:
1
2
|
for key in probabilities_dict: print (key, probabilities_dict.get(key), sep = ': ' , end = ', ' ) #返回 Sunny: 0.3, Cloudy: 0.35, Windy: 0.15, Rainy: 0.2, |
巨人的肩膀:
https://www.cnblogs.com/whatisfantasy/p/6273913.html
https://stackoverflow.com/questions/18296755/python-max-function-using-key-and-lambda-expression