zoukankan      html  css  js  c++  java
  • 保留键的情况下取字典中最大的值(maxzip函数的联合使用)

    在我们平常想要获取字典中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)
  • 相关阅读:
    【Java 学习笔记】 问题列表
    【Weka】Weka聚类
    【MFC 学习笔记】MFC BUG
    【Java 学习笔记】 变量转换
    【MFC 学习笔记】CheckListBox
    Http Handler 介绍
    C# HttpWebRequest可断点上传,下载文件;SOCKET多线程多管道可断点传送大文件
    SQL Server 2005 常用数据类型详解
    浅谈OCR之Tesseract
    [理财产品] 招行新的日日金8158
  • 原文地址:https://www.cnblogs.com/codescrew/p/8685875.html
Copyright © 2011-2022 走看看