从集合中查找最值得方法有很多,常用的方法有max(),min(),nlargest(),nsmallest()等。

一、max()和min()

1.1 入门用法

直接使用max(),min(),返回可迭代对象中的最大值和最小值。

 a = [1, 5, 2, 1, 9, 1, 5, 10]
print(max(a))
print(min(a)) #运行结果如下
10
1

1.2 进阶用法

我们以max()为例来分析。max(interable,key=none),即max()函数中第一个参数需要提供一个可迭代的查找对象。key值为空时,仅返回一个最大值。当key值非空时,max()函数就以key为标准来判断,通常可结合匿名函数使用。

 a = [14, -57, 21, 10, 19, 12, 25, 10]
print(max(a, key=lambda x:str(x))) #以对应的字符串做判断标准
print(max(a, key=lambda x:len(str(x)))) #以对应的字符串的长度做判断标准
print(max(a, key=lambda x:abs(x))) #以绝对值大小做判断标准 #运行结果如下
25
-57
-57

min()的用法与max()同理,不再举例

1.3 高阶用法

高阶用法可与zip()结合,查找字典中value最大的item项。比如,有一组商品,商品名和价格的映射关系体现在字典中,如下:

prices={
"装载机":768,
"推土机":248,
"平地机":131,
"橄榄车":375,
"反铲":636
}

这里需要注意的是在进行字典操作时,默认是对key进行操作,而不是value(其中一个很重要的原因是key具有唯一性,而value没有)。所以,我们要使用zip方法将字典的键值反转过来,在进行排序查找。

min_price = min(zip(prices.values(),prices.keys()))
print(min_price) max_price = max(zip(prices.values(),prices.keys()))
print(max_price) #运行结果如下
(131, '平地机')
(768, '装载机')

注意:

zip()是创建了一个迭代器,它只能使用一次,所以,如下方法是会报错的

price_and_name = zip(prices.values(),prices.keys())

print(max(price_and_name))
print(min(price_and_name))

二、nlargest()和nsmallest()

前面提到的max()和min()只能返回一项值,而heapq模块下的nlargest()和nsmallest(),可以返回最大或最小的多个值。

 import heapq

 nums = [12,548,31,4,546,58,46,1,8,42,3,68]

 print(heapq.nlargest(3,nums))
print(heapq.nsmallest(4,nums)) #运行结果如下
[548, 546, 68]
[1, 3, 4, 8]

可以看到nlargest()和nsmallest()可以返回指定数目的最值。与max()和min()一样,nlargest()和nsmallest()也可以加上key作为判断条件,从而用于更复杂的数据结构。

 import heapq

 students = [
{"name":"张三", "age":19, "tuition":6000},
{"name":"李四", "age":23, "tuition":4500},
{"name":"王五", "age":18, "tuition":8000},
{"name":"赵六", "age":29, "tuition":7000},
{"name":"钱七", "age":27, "tuition":5500}
] print(heapq.nlargest(3,students,key=lambda x:x["tuition"]))
print(heapq.nsmallest(3,students,key=lambda y:y["age"])) #运行结果如下:
[{'name': '王五', 'age': 18, 'tuition': 8000}, {'name': '赵六', 'age': 29, 'tuition': 7000}, {'name': '张三', 'age': 19, 'tuition': 6000}]
[{'name': '王五', 'age': 18, 'tuition': 8000}, {'name': '张三', 'age': 19, 'tuition': 6000}, {'name': '李四', 'age': 23, 'tuition': 4500}]

从集合中查找最值得方法——max(),min(),nlargest(),nsmallest()的更多相关文章

  1. 【转载】C#中List集合中Last和LastOrDefault方法的差别

    在C#的List集合操作中,Last方法和LastOrDefault方法都会用来查找集合中最后一个符合条件的元素对象,但Last和LastOrDefault方法还是有差别的,建议使用LastOrDef ...

  2. Map集合中value()方法与keySet()、entrySet()区别

    http://blog.csdn.net/liu826710/article/details/9001254 在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, ...

  3. Map集合中value()方法与keySet()、entrySet()区别 《转》

    在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入到set集合中.因为set具备迭代器.所有可以迭代方式取出所有的键 ...

  4. 从一个集合中查找最大最小的N个元素——Python heapq 堆数据结构

    Top N问题在搜索引擎.推荐系统领域应用很广, 如果用我们较为常见的语言,如C.C++.Java等,代码量至少也得五行,但是用Python的话,只用一个函数就能搞定,只需引入heapq(堆队列)这个 ...

  5. 遍历Collection集合中的6种方法:

    下面的代码演示了遍历Collection集合的6种方法,注意Collection集合的遍历远不止于增强for循环,和迭代器两种. 代码如下: package com.qls.traverse; imp ...

  6. Javasrcipt中从一个url或者从一个字符串中获取参数值得方法

    从url中获取参数值是che程序开发过程中的常用需求,偶然得闲,便抽空研究了一下javasrcipt下,获取参数的办法(JAVA中也类似). 首先看url的规范: URL组成:protocol :// ...

  7. 用Java集合中的Collections.sort方法对list排序的两种方法

    用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  8. Map集合中的一些具体方法的体现

    package com.java.b.map.www; import java.util.Collection;import java.util.HashMap;import java.util.It ...

  9. 深入浅出:了解for循环中保留i值得方法

    一.保留i值  通常情况下,因为一些效果我们需要获取到for循环中的i的值,但是往往拿到的都是最后一个i的值.下面介绍几种方法可以获取到i的值 1.自定义属性: arr[i].index = i; 以 ...

随机推荐

  1. 模拟登录,发送amf类型数据

    参考 http://blog.csdn.net/amandag/article/details/5666219 以及 稍微修改了一下AMFPost的类     一.登录 登录过程中主要用到标红的3个请 ...

  2. autolayout原理

    Autolayout Engine根据视图间的约束关系得到一个线性方程组,求这个线性方程组的解即得到每个视图的位置信息.(x,y,width,height) 参考: https://www.jians ...

  3. html:input的type=number的时候maxlength失效问题

    <input type="text"  maxlength="5" />   效果ok,当 <input type="number& ...

  4. MySQL 登陆

    #==========================登陆mysql ============================================ # 登陆用户名:-u,登陆IP: -h, ...

  5. Install Oracle Tuxedo in silent mode

    在我的工作中,Tuxedo通常是和PeopleSoft一起出现的. 下面总结不同版本Tuxedo静默(silent)安装的方法,方便提高我们部署系统的效率. Tuxedo 12.1.3 1. repo ...

  6. gcc8.2安装

    contrib/download_prerequisites 1.base_url='ftp://gcc.gnu.org/pub/gcc/infrastructure/' 改为base_url='ht ...

  7. 史上最全最详细的环境搭建教程,行百里者手把手教你在windows下搭建Anaconda+pycharm+库文件(TensorFlow,numpy)环境搭建

    我是在搭建TensorFlow开发环境的道路上走了很多弯路 掉了很多头发,为了让广大同学们不在受苦受累 下面我将手把手教你学习如特快速搭建python环境 快速导入numpy,PIL,pillow,等 ...

  8. Gulp教程之:Gulp能做什么,前端装逼为何要用它

    我们先说说 平时web开发遇到的一些场景 和 苦恼无奈的情况: JavaScript和CSS的版本问题 我们都知道 JavaScript和CSS属于静态文件,如果地址不变,浏览器会缓存这些文件,那就意 ...

  9. pyautogui 文档(三):键盘控制

    typewrite()函数 主要的键盘功能是typewrite().此函数将键入字符串中传递的字符.要在按下每个字符键之间添加延迟间隔,请为interval关键字参数传递int float . > ...

  10. MacbookPro下载word文件显示dms怎么办

    方法:直接改扩展名!!!!!!!!!! 如果你下载的是word的话,把最后的扩展名.dms改成.doc就可以了. 同理,如果你下载的是rar的话,改成rar就好了.