今天用Python写脚本,想要实现这样的功能:对于给定的字典,返回其中Value最大值对应的Key。

搜索后找到了解决方法,同时也学到了max key参数的作用。

例1,

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,

def func(n):
return abs(n)
testlist = [9.2, 10, -20.3, -7.0, 9.999, 20.111]
print(max(testlist, key=func))  #结果与例1一致 

该func是自定义的函数。

对于简单的方法,一般使用lambda函数。

例3,

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,

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)的值:

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

Python3之max key参数学习记录的更多相关文章

  1. [转]Python3之max key参数学习记录

    Python3之max key参数学习记录 转自https://www.cnblogs.com/zhangwei22/p/9892422.html 今天用Python写脚本,想要实现这样的功能:对于给 ...

  2. 带有key参数的函数filter,map,max,min

    内置函数———filter def is_not_empty(s): return s and len(s.strip()) > 0 filter(is_not_empty, ['test', ...

  3. python四个带 key 参数的函数(max、min、map、filter)

    四个带 key 参数的函数: max()点击查看详细 min()点击查看详细 map()点击查看详细 filter()点击查看详细 1)max(iterable, key) key:相当于对可迭代对象 ...

  4. Matlab 进阶学习记录

    最近在看 Faster RCNN的Matlab code,发现很多matlab技巧,在此记录: 1. conf_proposal  =  proposal_config('image_means', ...

  5. Python学习记录:括号配对检测问题

    Python学习记录:括号配对检测问题 一.问题描述 在练习Python程序题的时候,我遇到了括号配对检测问题. 问题描述:提示用户输入一行字符串,其中可能包括小括号 (),请检查小括号是否配对正确, ...

  6. DP学习记录Ⅰ

    DP学习记录Ⅱ 前言 状态定义,转移方程,边界处理,这三部分想好了,就问题不大了.重点在状态定义,转移方程是基于状态定义的,边界处理是方便转移方程的开始的.因此最好先在纸上写出自己状态的意义,越详细越 ...

  7. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  8. Python学习记录day5

    title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...

  9. Using innodb_large_prefix to avoid ERROR #1071,Specified key was too long; max key length is 1000 bytes

    Using innodb_large_prefix to avoid ERROR 1071        单列索引限制上面有提到单列索引限制767,起因是256×3-1.这个3是字符最大占用空间(ut ...

随机推荐

  1. C#设置IE代理

    public class IEProxySetting { public static bool UnsetProxy() { return SetProxy(null, null); } publi ...

  2. ubuntun 18.04 安装google浏览器

    ---恢复内容开始--- 一:下载谷歌浏览器镜像源 sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/ap ...

  3. Java GC机制

    GC机制的基本算法是:分代收集,这个不用赘述.下面阐述每个分代的收集方法. 年轻代: 事实上,在上一节,已经介绍了新生代的主要垃圾回收方法,在新生代中,使用“停止-复制”算法进行清理,将新生代内存分为 ...

  4. python检测服务器端口

    import socket sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sk.settimeout(10) try: sk.conne ...

  5. 问题处理:Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)

    进入rails 文件夹, terminal输入rails console报告❌. 类似下面的 Running via Spring preloader Traceback (most recent c ...

  6. 『TensorFlow』读书笔记_降噪自编码器

    『TensorFlow』降噪自编码器设计  之前学习过的代码,又敲了一遍,新的收获也还是有的,因为这次注释写的比较详尽,所以再次记录一下,具体的相关知识查阅之前写的文章即可(见上面链接). # Aut ...

  7. 『TensorFlow』命令行参数解析

    argparse很强大,但是我们未必需要使用这么繁杂的东西,TensorFlow自己封装了一个简化版本的解析方式,实际上是对argparse的封装 脚本化调用tensorflow的标准范式: impo ...

  8. 『TensorFlow』TFR数据预处理探究以及框架搭建

    一.TFRecord文件书写效率对比(单线程和多线程对比) 1.准备工作 # Author : Hellcat # Time : 18-1-15 ''' import os os.environ[&q ...

  9. C++解析十-数据封装

    数据封装 所有的 C++ 程序都有以下两个基本要素: 程序语句(代码):这是程序中执行动作的部分,它们被称为函数. 程序数据:数据是程序的信息,会受到程序函数的影响.封装是面向对象编程中把数据和操作数 ...

  10. 高性能消息中间件——NATS

    前 言 这段时间我的主要工作内容是将公司系统中使用的RabbitMQ替换成NATS,而此之前我对Nats一无所知.经过一段时间紧张的学习和开发之后我顺利的完成了任务,并对消息中间件有了更深的了解.在此 ...