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装饰器
Jul 27 Python
Python+OpenCV目标跟踪实现基本的运动检测
Jul 10 Python
Django之无名分组和有名分组的实现
Apr 16 Python
Python数据类型之列表和元组的方法实例详解
Jul 08 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
Jul 22 Python
Python编程中类与类的关系详解
Aug 08 Python
Django如何实现网站注册用户邮箱验证功能
Aug 14 Python
使用OpCode绕过Python沙箱的方法详解
Sep 03 Python
Python实现投影法分割图像示例(二)
Jan 17 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
Python基于pandas绘制散点图矩阵代码实例
Jun 04 Python
Python高并发解决方案实现过程详解
Jul 31 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
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
jquery 图片轮换效果
2010/07/29 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
Node.js学习入门
2017/01/03 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
vue生命周期的探索
2019/04/03 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
[54:29]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第二场
2018/04/09 DOTA
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
jupyter 导入csv文件方式
2020/04/21 Python
Python代码注释规范代码实例解析
2020/08/14 Python
Java面试题:请问一下代码输出是什么
2015/05/27 面试题
科室工作个人总结的自我评价
2013/10/29 职场文书
优秀求职信范文分享
2013/12/19 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
护士个人年终总结
2015/02/13 职场文书
警告通知
2015/04/25 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
《我是什么》教学反思
2016/02/16 职场文书
Java方法重载和方法重写的区别到底在哪?
2021/06/11 Java/Android