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自动重试HTTP连接装饰器
Apr 28 Python
在Python中用has_key()方法查找键是否存在的教程
May 21 Python
Python Django使用forms来实现评论功能
Aug 17 Python
Python网络爬虫中的同步与异步示例详解
Feb 03 Python
详解pyenv下使用python matplotlib模块的问题解决
Nov 29 Python
Python 获取numpy.array索引值的实例
Dec 06 Python
Django接收照片储存文件的实例代码
Mar 07 Python
使用python创建生成动态链接库dll的方法
May 09 Python
Python包和模块的分发详细介绍
Jun 19 Python
Python下载网易云歌单歌曲的示例代码
Aug 12 Python
如何将json数据转换为python数据
Sep 04 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
Jan 21 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
pw的一个放后门的方法分析
2007/10/08 PHP
php获取某个目录大小的代码
2008/09/10 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
JS获取当前使用的浏览器名字以及版本号实现方法
2016/08/19 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
webpack 处理CSS资源的实现
2019/09/27 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
python复制文件代码实现
2013/12/23 Python
利用Python绘制MySQL数据图实现数据可视化
2015/03/30 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
Python 中的 global 标识对变量作用域的影响
2019/08/12 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
css3 响应式媒体查询的示例代码
2019/09/25 HTML / CSS
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
毕业生医学检验求职信
2013/10/16 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
自我查摆剖析材料
2014/10/11 职场文书
三峡导游词
2015/01/31 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书