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绘制数据的瀑布图的教程
Apr 07 Python
Python中类的定义、继承及使用对象实例详解
Apr 30 Python
Python新手入门最容易犯的错误总结
Apr 24 Python
Python使用当前时间、随机数产生一个唯一数字的方法
Sep 18 Python
Python-OpenCV基本操作方法详解
Apr 02 Python
Python实现快速计算词频功能示例
Jun 25 Python
python读取有密码的zip压缩文件实例
Feb 08 Python
python把转列表为集合的方法
Jun 28 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
Eclipse配置python默认头过程图解
Apr 26 Python
在Sublime Editor中配置Python环境的详细教程
May 03 Python
Python tkinter实现日期选择器
Feb 22 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
农民和部队如何穿矿
2020/03/04 星际争霸
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
用Socket发送电子邮件
2006/10/09 PHP
计数器详细设计
2006/10/09 PHP
php下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
zend framework中使用memcache的方法
2016/03/04 PHP
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
AngularJS中的表单简单入门
2016/07/28 Javascript
vuejs父子组件通信的问题
2017/01/11 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
layui table 参数设置方法
2018/08/14 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
python插入排序算法的实现代码
2013/11/21 Python
python基础练习之几个简单的游戏
2017/11/10 Python
python测试mysql写入性能完整实例
2018/01/18 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
什么是数据抽象
2016/11/26 面试题
国际贸易个人求职信范文
2014/01/04 职场文书
六一儿童节活动策划方案
2014/01/27 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
物业消防安全责任书
2014/07/23 职场文书
优秀员工推荐材料
2014/12/20 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
宝宝满月祝酒词
2015/08/10 职场文书