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重新引入被覆盖的自带function
Jul 16 Python
python判断字符串是否包含子字符串的方法
Mar 24 Python
十个Python程序员易犯的错误
Dec 15 Python
详解Python文本操作相关模块
Jun 22 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
对python中字典keys,values,items的使用详解
Feb 03 Python
Python TCP通信客户端服务端代码实例
Nov 21 Python
Python3 A*寻路算法实现方式
Dec 24 Python
TensorFlow的reshape操作 tf.reshape的实现
Apr 19 Python
python map比for循环快在哪
Sep 21 Python
Python 开发工具通过 agent 代理使用的方法
Sep 27 Python
Python3的进程和线程你了解吗
Mar 16 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/07/05 PHP
mac下安装nginx和php
2013/11/04 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
asp批量修改记录的代码
2008/06/25 Javascript
iframe 异步加载技术及性能分析
2011/07/19 Javascript
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
2015/08/26 Javascript
Bootstrap3制作自己的导航栏
2016/05/12 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
2017/02/27 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
python字符串连接的N种方式总结
2014/09/17 Python
Python实现包含min函数的栈
2016/04/29 Python
利用Python写一个爬妹子的爬虫
2018/06/08 Python
浅谈python之新式类
2018/08/12 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
2018/12/17 Python
python利用openpyxl拆分多个工作表的工作簿的方法
2019/09/27 Python
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
银行实习的自我鉴定
2013/12/10 职场文书
大家检讨书5000字
2014/02/03 职场文书
教师求职自荐信
2014/03/09 职场文书
如何写一份好的英文求职信
2014/03/19 职场文书
2014年村官工作总结
2014/11/24 职场文书
离职信范文
2015/06/23 职场文书
关于保护环境的建议书
2019/06/24 职场文书
3招让你摆脱即兴讲话冷场尴尬
2019/08/08 职场文书
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js