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实现图像几何变换
Jul 06 Python
python TCP Socket的粘包和分包的处理详解
Feb 09 Python
Django中Forms的使用代码解析
Feb 10 Python
python实现扫描日志关键字的示例
Apr 28 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
实例讲解Python3中abs()函数
Feb 19 Python
利用python实现周期财务统计可视化
Aug 25 Python
使用pandas的box_plot去除异常值
Dec 10 Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 Python
python对文件的操作方法汇总
Feb 28 Python
Visual Studio Code搭建django项目的方法步骤
Sep 17 Python
python利用文件时间批量重命名照片和视频
Feb 09 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
第七节--类的静态成员
2006/11/16 PHP
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
jquery 简单的进度条实现代码
2010/03/11 Javascript
初识JQuery 实例一(first)
2011/03/16 Javascript
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
Fullpage.js固定导航栏-实现定位导航栏
2016/03/17 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
实现两个文本框同时输入的实例
2017/09/25 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
python实现socket客户端和服务端简单示例
2014/02/24 Python
Python实现去除代码前行号的方法
2015/03/10 Python
Python中生成器和yield语句的用法详解
2015/04/17 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
怎么快速自学python
2020/06/22 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
运动会入场解说词
2014/02/07 职场文书
鉴定评语大全
2014/05/05 职场文书
秋季校运会广播稿100字
2014/09/18 职场文书
群众路线个人整改措施
2014/10/24 职场文书
离婚被告代理词
2015/05/23 职场文书
信用卡收入证明范本
2015/06/12 职场文书
sql server 累计求和实现代码
2022/02/28 SQL Server
MySQL三种方式实现递归查询
2022/04/18 MySQL