保留键的情况下取字典中最大的值(max\zip函数的联合使用)

在我们平常想要获取字典中value最大或者最小的值的时候,常常使用如下函数:

testDict = {"age1":18,"age2":20,"age2":6,"age2":100}
v1 = max(testDict.values())
print(v1)  #打印结果为100

这样已经达到了获取最大值的目的,但是这样就丢失了key。要如何保留key呢,这就需要用到zip函数

zip函数的作用是将两个序列以顺序对应起来,最后生成一个列表,列表的每一个元素为含有两个元素的元组,元组的两个元素为初始两个序列相同位置元素的对应。如下所示:

testList1 = ["age1","age2","age3","age4"]
testList2 = [18,20,6,100]
v2 = zip(testList1,testList2) #返回值是一个可迭代对象
v2 = list(v2)  #将可迭代对象转换为一个列表,方便打印
print(v2)   #打印结果为[(‘age1‘, 18), (‘age2‘, 20), (‘age3‘, 6), (‘age4‘, 100)]

利用zip函数,我们来实现最初的需求“保留键的情况下取字典中最大的值”,如下代码所示

testDict = {"age1":18,"age2":20,"age3":6,"age4":100}

v1 = zip(testDict.values(),testDict.keys())  #先打包
v2 = max(v1)   #再比较
print(v2)  #打印结果为(100, ‘age4‘)

以上传入max的参数为有序类型,如果想往max参数中传入无序类型进行比较又如何进行呢。

还有一种配合max的第二个参数与lambda函数结合实现更为简洁高效的方法如下:

people = [
     {"name":"张三","age":18},
     {"name":"李四","age":100},
     {"name":"王五","age":6},
     {"name":"赵六","age":20},
]
v1 = max(people,key=lambda dic:dic["age"])
print(v1)

原文地址:https://www.cnblogs.com/codescrew/p/8685875.html

时间: 2024-11-07 09:07:01

保留键的情况下取字典中最大的值(max\zip函数的联合使用)的相关文章

在jsp中选中checkbox后 将该记录的多个数据获取,然后传到Action类中进行后台处理 双主键情况下 *.hbm.xml中的写法

在jsp中选中checkbox后 将该记录的多个数据获取,然后传到Action类中进行后台处理 双主键情况下 *.hbm.xml中的写法 ==========方法1: --------1. 选相应的checkbox后  点删除按钮------------- <!-- *******************删除******************* -->     <input type="image" alt="delete"      src=&

jquery选择器多值情况处理(取select列表选项的值)

//多个同名的select值 var s=$("select[name=dutylistall]"); var dutylistall=""; s.each(function(i,el){ //console.info(i); //console.info(el); //console.info($(el).find("option:selected").val()); if(i!=0){ dutylistall+=",";

不修改模板的前提下修改VisualState中的某些值

UWP里有一件非常令人不爽的事,大部分控件只提供了Normal状态下的Background,Foreground,BorderBrush,而控件一般至少具有Normal.PointerOver.Pressed.Disabled,ItemContainerStyle还有Selected.PointerOverSelected.PressedSelected这几种.那么常规方法怎么修改这几个状态内的值呢? 当然是贴一遍又臭又长的Style. 那如果有很多不是很一样的控件,除了修改模板或者自定义一个控

如何在不使用系统函数的情况下实现PHP中数组系统函数的功能

PHP中为我们提供了各种各样的系统函数来实现我们需要的各种功能,那么,在不使用系统函数的情况下我们要怎样来实现这些功能呢?以下就是几种系统函数的实现方式. 首先,我们来定义一个数组: $arr= array(1,2,3,4,5,6,"a"=>7,"b"=>8,"c"=>"haha",10); 以下是对于这个数组可以使用的系统函数和不使用系统函数获得同样效果的方式: 1.返回数组的所有的值,返回数组.(arra

Phthon函数之一——取字典中的条件key

取字典info中值为10000的key值: def getkeys(key): info = {"刘江红": 12000, "曹俊杰": 10000, "赵磊": 10000} for i in info.keys(): if info[i] == key: print(i)getkeys(10000) 取字典info中值大于10010的key值: def getkeys(v): info = {"刘江红": 12000, &

利用js取到下拉框中选择的值

现在的需求是:下拉框中要是选择加盟商让其继续选择学校,要是选择平台管理员则不需要选择学校.隐藏选择下拉列表. 选择枚举值: /// <summary> /// 平台角色 /// </summary> public enum AdministratorRole { [Display(Name = "平台管理员")] PlatformAdministrator = 1, [Display(Name = "加盟商")] JoiningTrader

不同情况下元素局中的方法

一.居中元素定宽定高情况 .fu{ width: 500px; height: 500px; border:1px solid #000; } .kuangao{ width: 100px; height: 50px; background-color: red; } <div class="fu"> <div class="kuangao"></div> </div> 1.水平局中: 方法一: 利用自动外边距 .ku

并发情况下取唯一流水号的写法

readonly object _Syn = new object(); int Seed = 0; public int TreadValueGet() { // 5 Critical Section // Enter 和 Exit 方法提供的功能与 C# lock 语句提供的功能相同, // 区别在于 lock 将 Enter(Object, Boolean) 方法重载和 Exit 方法包装在 try…finally 块中以确保释放监视器 //int _retValue = 0; //whi

Mysql实现无插入有更新(不知主键的情况下)

网上很多资料说有两种方式 (必须现有唯一键) 1.INSERT 中ON DUPLICATE KEY UPDATE的使用 2.REPLACE的使用 通过可以得出结果: 如果a和b字段 能决定唯一 例子: REPLACE INTO tb(id,a,b,c,d) SELECT  IFNULL( (SELECT id from tb where (a='2017-08-31 08:10:00' and b=11001) LIMIT 1),0) id,'2017-08-31 08:10:00',11001