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中使用pyhook实现键盘监控的例子
Jul 18 Python
关于你不想知道的所有Python3 unicode特性
Nov 28 Python
python批量生成本地ip地址的方法
Mar 23 Python
Python中return语句用法实例分析
Aug 04 Python
matplotlib简介,安装和简单实例代码
Dec 26 Python
Python多线程原理与用法详解
Aug 20 Python
对Python subprocess.Popen子进程管道阻塞详解
Oct 29 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
python实现的爬取电影下载链接功能示例
Aug 26 Python
pytorch 求网络模型参数实例
Dec 30 Python
Python 下载Bing壁纸的示例
Sep 29 Python
利用Python实现Picgo图床工具
Nov 23 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压缩多个CSS为一个css的代码并缓存
2011/04/21 PHP
PHP加密解密类实例分析
2015/04/20 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
2016/01/27 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
JavaScript中的&quot;=、==、===&quot;区别讲解
2019/01/22 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
python解析模块(ConfigParser)使用方法
2013/12/10 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
GC是什么?为什么要有GC?
2013/12/08 面试题
英语翻译系毕业生求职信
2013/09/29 职场文书
毕业生优秀推荐信
2013/11/26 职场文书
收银员岗位职责
2014/02/07 职场文书
申请任职学生会干部自荐书范文
2014/02/13 职场文书
化验室岗位职责
2015/02/14 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
网络营销实训总结
2015/08/03 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers