从集合中查找最值得方法——max(),min(),nlargest(),nsmallest()
从集合中查找最值得方法有很多,常用的方法有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()的更多相关文章
- 【转载】C#中List集合中Last和LastOrDefault方法的差别
在C#的List集合操作中,Last方法和LastOrDefault方法都会用来查找集合中最后一个符合条件的元素对象,但Last和LastOrDefault方法还是有差别的,建议使用LastOrDef ...
- Map集合中value()方法与keySet()、entrySet()区别
http://blog.csdn.net/liu826710/article/details/9001254 在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, ...
- Map集合中value()方法与keySet()、entrySet()区别 《转》
在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入到set集合中.因为set具备迭代器.所有可以迭代方式取出所有的键 ...
- 从一个集合中查找最大最小的N个元素——Python heapq 堆数据结构
Top N问题在搜索引擎.推荐系统领域应用很广, 如果用我们较为常见的语言,如C.C++.Java等,代码量至少也得五行,但是用Python的话,只用一个函数就能搞定,只需引入heapq(堆队列)这个 ...
- 遍历Collection集合中的6种方法:
下面的代码演示了遍历Collection集合的6种方法,注意Collection集合的遍历远不止于增强for循环,和迭代器两种. 代码如下: package com.qls.traverse; imp ...
- Javasrcipt中从一个url或者从一个字符串中获取参数值得方法
从url中获取参数值是che程序开发过程中的常用需求,偶然得闲,便抽空研究了一下javasrcipt下,获取参数的办法(JAVA中也类似). 首先看url的规范: URL组成:protocol :// ...
- 用Java集合中的Collections.sort方法对list排序的两种方法
用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- Map集合中的一些具体方法的体现
package com.java.b.map.www; import java.util.Collection;import java.util.HashMap;import java.util.It ...
- 深入浅出:了解for循环中保留i值得方法
一.保留i值 通常情况下,因为一些效果我们需要获取到for循环中的i的值,但是往往拿到的都是最后一个i的值.下面介绍几种方法可以获取到i的值 1.自定义属性: arr[i].index = i; 以 ...
随机推荐
- zabbix3.x添加华为(93069306)网络设备详解
转载自:https://www.cnblogs.com/yinzhengjie/p/6768006.html 前言: 欢迎加入:高级运维工程师之路 598432640 相信大家在看我的文章之前,也看过 ...
- Python爬虫与数据分析之爬虫技能:urlib库、xpath选择器、正则表达式
专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...
- 使用 nodeJs 开发微信公众号(获取access_token)
要使用微信提供的功能接口,就需要获取到access_token,这是开发公众号必不可少的一部 access_token有效期20分钟,建议保存起来,过期后在重新获取 获取流程如下: 我将微信相关的操作 ...
- [SQL]删除约束
来源:http://www.archonsystems.com/devblog/2012/05/25/how-to-drop-a-column-with-a-default-value-constra ...
- 1024程序员节宅男节日快乐 -- JAVA快速开发平台,JEECG 3.8宅男优化版本发布
JEECG 3.8 版本发布,系统全面升级,重构上传组件.优化代码生成器机制! 导读 ⊙平台性能优化,系统更稳定,速度闪电般提升 ⊙系统上传组件全面重构,使用plupload组件,解决flash的 ...
- html:input的type=number的时候maxlength失效问题
<input type="text" maxlength="5" /> 效果ok,当 <input type="number& ...
- 贝叶斯公式与最大后验估计(MAP)
1, 频率派思想 频率派思想认为概率乃事情发生的频率,概率是一固定常量,是固定不变的 2, 最大似然估计 假设有100个水果由苹果和梨混在一起,具体分配比例未知,于是你去随机抽取10次,抽到苹果标记为 ...
- yarn安装及node升级
ERROR: root@debian:/home/test/keygen-radio-master/scripts# npm install -g yarn npm WARN engine yarn@ ...
- 给C#Control组件统一增加加属性
http://www.cnblogs.com/SharkXu/archive/2006/08/24/EnterGoto.html
- Excel VBA 连接各种数据库(一) VBA连接MySQL数据库
本文参考[东围居士]的cnblog博文 Excel.VBA与MySQL交互 在自己机器上调试成功,把调试中遇到的问题一并写出了. 本文主要涉及: VBA中的MySQL环境配置 VBA连接MySQL ...