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中的模块导入和读取键盘输入的方法
Oct 16 Python
PyQt5 QSerialPort子线程操作的实现
Apr 21 Python
python实现支付宝当面付(扫码支付)功能
May 30 Python
numpy使用fromstring创建矩阵的实例
Jun 15 Python
python用requests实现http请求代码实例
Oct 31 Python
Python如何实现强制数据类型转换
Nov 22 Python
Python使用循环神经网络解决文本分类问题的方法详解
Jan 16 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
python实现图像外边界跟踪操作
Jul 13 Python
Python unittest生成测试报告过程解析
Sep 08 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 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
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
php多线程并发实现方法
2016/09/30 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
2019/07/22 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
laravel 获取当前url的别名方法
2019/10/11 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
JS 进度条效果实现代码整理
2011/05/21 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
2013/11/29 Javascript
js键盘事件的keyCode
2014/07/29 Javascript
JavaScript动态改变表格单元格内容的方法
2015/03/30 Javascript
jQuery中toggle()函数的使用实例
2015/04/17 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
推荐VSCode 上特别好用的 Vue 插件之vetur
2017/09/14 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
如何实现iframe父子传参通信
2020/02/05 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
Python中类的继承代码实例
2014/10/28 Python
Python3中的2to3转换工具使用示例
2015/06/12 Python
django框架CSRF防护原理与用法分析
2019/07/22 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
使用python-cv2实现视频的分解与合成的示例代码
2020/10/26 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
印度首个本地在线平台:nearbuy
2019/03/28 全球购物
一道SQL面试题
2012/12/31 面试题
优秀毕业自我鉴定
2014/02/15 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
JavaScript的Set数据结构详解
2022/02/18 Javascript
Nginx如何配置根据路径转发详解
2022/07/23 Servers