Python cookbook(数据结构与算法)字典相关计算问题示例


Posted in Python onFebruary 18, 2018

本文实例讲述了Python cookbook(数据结构与算法)字典相关计算问题。分享给大家供大家参考,具体如下:

问题:在字典上对数据执行各式各样的计算(比如求最小值、最大值、排序)。

解决方案:利用zip()将字典的键-值对“反转”为值-键对序列。

例如:如下字典存放的股票名称和对应的价格:

>>> prices = {
 'ACME': 45.23,
 'AAPL': 612.78,
 'IBM': 205.55,
 'HPQ': 37.20,
 'FB': 10.75
}
>>> prices
{'HPQ': 37.2, 'IBM': 205.55, 'FB': 10.75, 'ACME': 45.23, 'AAPL': 612.78}
>>> min_price = min(zip(prices.values(), prices.keys())) #注意zip(x,y)中参数的顺序
>>> max_price = max(zip(prices.values(), prices.keys()))
>>> min_price
(10.75, 'FB')
>>> max_price
(612.78, 'AAPL')
>>> prices_sorted = sorted(zip(prices.values(), prices.keys()))
>>> prices_sorted
[(10.75, 'FB'), (37.2, 'HPQ'), (45.23, 'ACME'), (205.55, 'IBM'), (612.78, 'AAPL')]
>>> min_price2 = min(zip(prices)) #错误用法
>>> min_price2
('AAPL',)
>>> max_price2 = max(zip(prices)) #错误用法
>>> max_price2
('IBM',)
>>> min_price3 = min(zip(prices.keys(), prices.values())) #zip()参数顺序不对,获取错误的值
>>> min_price3
('AAPL', 612.78)
>>> max_price3 = max(zip(prices.keys(), prices.values())) #zip()参数顺序不对,获取错误的值
>>> max_price3
('IBM', 205.55)
>>>

进行这些计算时,请注意zip()创建了一个迭代器,它的内容只能消费一次。例如:

>>> pirces_and_names=zip(prices.values(), prices.keys())
>>> pirces_and_names
<zip object at 0x023BDFA8>
>>> min(pirces_and_names)
(10.75, 'FB')
>>> max(pirces_and_names)
Traceback (most recent call last):
 File "<pyshell#25>", line 1, in <module>
 max(pirces_and_names)
ValueError: max() arg is an empty sequence
>>>

注意:当涉及(value,key)对的比较时,碰巧有多个条目拥有相同的value值,那么此时key将用来作为判定结果的依据。

>>> prices={'AAA':45.23,'ZZZ':45.23}
>>> min(zip(prices.values(), prices.keys()))
(45.23, 'AAA')
>>> max(zip(prices.values(), prices.keys()))
(45.23, 'ZZZ')
>>>

(代码摘自《Python Cookbook》)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
Sep 19 Python
python 将list转成字符串,中间用符号分隔的方法
Oct 23 Python
基于Python新建用户并产生随机密码过程解析
Oct 08 Python
基于Python实现船舶的MMSI的获取(推荐)
Oct 21 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
Nov 07 Python
python numpy 矩阵堆叠实例
Jan 17 Python
tensorflow对图像进行拼接的例子
Feb 05 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
Jun 28 Python
pytorch 把图片数据转化成tensor的操作
Mar 04 Python
快速一键生成Python爬虫请求头
Mar 04 Python
Python调用腾讯API实现人脸身份证比对功能
Apr 04 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
Feb 18 #Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
Feb 18 #Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
Feb 18 #Python
python快速建立超简单的web服务器的实现方法
Feb 17 #Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
Feb 13 #Python
python3学习笔记之多进程分布式小例子
Feb 13 #Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
Feb 13 #Python
You might like
php自动适应范围的分页代码
2008/08/05 PHP
为你总结一些php信息函数
2015/10/21 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python中的编码知识整理汇总
2016/01/26 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
若干个Java基础面试题
2015/05/19 面试题
大学生的创业计划书就该这么写
2014/01/30 职场文书
《画》教学反思
2014/04/14 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
校园活动策划方案
2014/06/13 职场文书
捐书倡议书
2014/08/29 职场文书
三严三实心得体会范文
2014/10/13 职场文书
毕业实习计划书
2015/01/16 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS
python控制台打印log输出重复的解决方法
2021/05/14 Python
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript
python游戏开发之pygame实现接球小游戏
2022/04/22 Python
Redis全局ID生成器的实现
2022/06/05 Redis