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搭建微信公众平台
Feb 16 Python
Python中super函数的用法
Nov 17 Python
酷! 程序员用Python带你玩转冲顶大会
Jan 17 Python
Python中.join()和os.path.join()两个函数的用法详解
Jun 11 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
python3 批量获取对应端口服务的实例
Jul 25 Python
python Pillow图像处理方法汇总
Oct 16 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
Dec 27 Python
Python基于Dlib的人脸识别系统的实现
Feb 26 Python
Django封装交互接口代码
Jul 12 Python
解析python中的jsonpath 提取器
Jan 18 Python
图神经网络GNN算法
May 11 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提取中英文词语以及数字的首字母的方法介绍
2013/04/23 PHP
Destoon实现多表查询示例
2014/08/21 PHP
详解PHP实现执行定时任务
2015/12/21 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
jquery基础教程之deferred对象使用方法
2014/01/22 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
2016/07/22 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
Vue实现点击箭头上下移动效果
2020/06/11 Javascript
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
全面解析Python的While循环语句的使用方法
2015/10/13 Python
Python while 循环使用的简单实例
2016/06/08 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
基于并发服务器几种实现方法(总结)
2017/12/29 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
校长就职演讲稿
2014/01/06 职场文书
优秀员工演讲稿
2014/05/19 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
机关单位工作失职检讨书
2014/11/20 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
亮剑观后感500字
2015/06/05 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
关于SpringBoot 使用 Redis 分布式锁解决并发问题
2021/11/17 Redis
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技