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同时兼容python2和python3的8个技巧分享
Jul 11 Python
Python的高级Git库 Gittle
Sep 22 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
Feb 26 Python
Django学习笔记之ORM基础教程
Mar 27 Python
Python实现针对给定单链表删除指定节点的方法
Apr 12 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
Jun 21 Python
python hashlib加密实现代码
Oct 17 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
Jan 18 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
Apr 02 Python
使用python批量转换文件编码为UTF-8的实现
Apr 03 Python
Python ORM框架Peewee用法详解
Apr 29 Python
PyTorch中的拷贝与就地操作详解
Dec 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
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
浅析PHP递归函数返回值使用方法
2013/02/18 PHP
PHP用身份证号获取星座和生肖的方法
2013/11/07 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
用Javascript读取中文COOKIE的解决办法
2007/02/15 Javascript
通过修改referer下载文件的方法
2008/05/11 Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
jquery select下拉框操作的一些说明
2010/04/02 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
2017/01/19 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
[04:05]TI9战队采访 - Natus Vincere
2019/08/22 DOTA
Python的Urllib库的基本使用教程
2015/04/30 Python
python实现ping的方法
2015/07/06 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
Python的多维空数组赋值方法
2018/04/13 Python
简单了解python关系(比较)运算符
2019/07/08 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
Python 随机按键模拟2小时
2020/12/30 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
Boutique 1美国:阿联酋奢侈时尚零售商
2017/10/16 全球购物
大学自我鉴定
2013/12/20 职场文书
决心书范文
2014/03/11 职场文书
项目建议书怎么写
2014/05/15 职场文书
大学生学期个人总结
2015/02/12 职场文书
工程资料员岗位职责
2015/04/13 职场文书
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android