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 相关文章推荐
推荐11个实用Python库
Jan 23 Python
部署Python的框架下的web app的详细教程
Apr 30 Python
python实现识别相似图片小结
Feb 22 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
解决项目pycharm能运行,在终端却无法运行的问题
Jan 19 Python
Python3实现zip分卷压缩过程解析
Oct 09 Python
python-视频分帧&amp;多帧合成视频实例
Dec 10 Python
Python selenium页面加载慢超时的解决方案
Mar 18 Python
python代码实现将列表中重复元素之间的内容全部滤除
May 22 Python
python利用线程实现多任务
Sep 18 Python
python 下载文件的几种方法汇总
Jan 06 Python
python 实现有道翻译功能
Feb 26 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
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
简单JS代码压缩器
2006/10/12 Javascript
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
JS实现按比例缩放图片的方法(附C#版代码)
2015/12/08 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
WEEX环境搭建与入门详解
2019/10/16 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
python使用matplotlib库生成随机漫步图
2018/08/27 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
深入理解Python异常处理的哲学
2019/02/01 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
德国购买健身器材:AsVIVA
2017/08/09 全球购物
幼儿园中秋节活动方案
2014/02/06 职场文书
电厂职工自我鉴定
2014/02/20 职场文书
中学生英语演讲稿
2014/04/26 职场文书
家长会欢迎标语
2014/06/24 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
SQL Server Agent 服务无法启动
2022/04/20 SQL Server