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操作MySQL的一些基本方法
Aug 16 Python
Python简单实现子网掩码转换的方法
Apr 13 Python
Python 实现选择排序的算法步骤
Apr 22 Python
Python模拟登录的多种方法(四种)
Jun 01 Python
python+rsync精确同步指定格式文件
Aug 29 Python
tensorboard实现同时显示训练曲线和测试曲线
Jan 21 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
Feb 12 Python
python tkinter实现连连看游戏
Nov 16 Python
python实现三阶魔方还原的示例代码
Apr 28 Python
Django cookie和session的应用场景及如何使用
Apr 29 Python
Python数据分析入门之数据读取与存储
May 13 Python
Python爬虫:从m3u8文件里提取小视频的正确操作
May 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
php FLEA中二叉树数组的遍历输出
2012/09/26 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
PHP中new static()与new self()的区别异同分析
2014/08/22 PHP
PHP中常见的缓存技术实例分析
2015/09/23 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
js的回调函数详解
2015/01/05 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
分享网页检测摇一摇实例代码
2016/01/14 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
JS实现根据密码长度显示安全条功能
2017/03/08 Javascript
深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域
2018/08/28 Javascript
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
python递归实现快速排序
2018/08/18 Python
python for 循环获取index索引的方法
2019/02/01 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
Python通过文本和图片生成词云图
2020/05/21 Python
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
How to spawning asynchronous work in J2EE
2016/08/29 面试题
《小鹰学飞》教学反思
2014/04/23 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
中国梦读书活动总结
2014/07/10 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
雷峰塔导游词
2015/02/09 职场文书
安全第一课观后感
2015/06/18 职场文书
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers