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对Excel进行读写操作
Mar 30 Python
Python+OpenCV目标跟踪实现基本的运动检测
Jul 10 Python
python opencv实现切变换 不裁减图片
Jul 26 Python
浅谈关于Python3中venv虚拟环境
Aug 01 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
python3正则提取字符串里的中文实例
Jan 31 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
Apr 15 Python
500行python代码实现飞机大战
Apr 24 Python
通过案例解析python鸭子类型相关原理
Oct 10 Python
Django filter动态过滤与排序实现过程解析
Nov 26 Python
python 实现的截屏工具
May 08 Python
python缺失值填充方法示例代码
Dec 24 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清除数组中所有字符串两端空格的方法
2014/10/20 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
php获取文章上一页与下一页的方法
2014/12/01 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
ext 同步和异步示例代码
2009/09/18 Javascript
判断文档离浏览器顶部的距离的方法
2014/01/08 Javascript
类似天猫商品详情随浏览器移动的示例代码
2014/02/27 Javascript
jQuery中each()方法用法实例
2014/12/27 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
2016/05/20 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
[35:43]2018DOTA2亚洲邀请赛 4.1 小组赛B组 paiN vs Effect
2018/04/03 DOTA
[01:06]DOTA2小知识课堂 Ep.02 吹风竟可解梦境缠绕
2019/12/05 DOTA
初步剖析C语言编程中的结构体
2016/01/16 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
django在开发中取消外键约束的实现
2020/05/20 Python
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
婚礼证婚人证婚词
2014/01/08 职场文书
2019年公司快递收发管理制度模板
2019/11/20 职场文书
详解在OpenCV中如何使用图像像素
2022/03/03 Python