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 相关文章推荐
win7上python2.7连接mysql数据库的方法
Jan 14 Python
Python实现Youku视频批量下载功能
Mar 14 Python
Python排序搜索基本算法之希尔排序实例分析
Dec 09 Python
python中的迭代和可迭代对象代码示例
Dec 27 Python
Python 进程之间共享数据(全局变量)的方法
Jul 16 Python
Django REST framework 如何实现内置访问频率控制
Jul 23 Python
Python: 传递列表副本方式
Dec 19 Python
keras 模型参数,模型保存,中间结果输出操作
Jul 06 Python
解决python3中os.popen()出错的问题
Nov 19 Python
Python ellipsis 的用法详解
Nov 20 Python
python实现三种随机请求头方式
Jan 05 Python
Golang Web 框架Iris安装部署
Aug 14 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
中国的第一台收音机
2021/03/01 无线电
PHP Memcached应用实现代码
2010/02/08 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
tp5.1 框架数据库-数据集操作实例分析
2020/05/26 PHP
Jquery遍历Json数据的方法
2015/04/20 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
wxPython学习之主框架实例
2014/09/28 Python
Python转换HTML到Text纯文本的方法
2015/01/15 Python
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
python pandas 如何替换某列的一个值
2018/06/09 Python
一看就懂得Python的math模块
2018/10/21 Python
详解Django CAS 解决方案
2019/10/30 Python
python3.7+selenium模拟淘宝登录功能的实现
2020/05/26 Python
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
手机业务员岗位职责
2013/12/13 职场文书
小区门卫值班制度
2014/01/24 职场文书
求职信怎么写范文
2014/05/26 职场文书
医学生求职自荐书
2014/06/12 职场文书
争先创优个人总结
2015/03/04 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android