详解Python字典的运算
作者:Abu11 发布时间:2021-02-15 16:28:19
标签:Python,字典,运算
目录
问题描述
解决方案
讨论
总结
问题描述
怎样在数据字典中执行一些计算操作(比如求最值、排序等)?
解决方案
有如下字典:
stocks = {
'ACME': 45.23,
'AAPL': 612.78,
'IBM': 205.55,
'HPQ': 37.20,
'FB': 10.75
}
为了对字典值进行计算操作,通常需要使用zip()函数先将字典的键和值反转过来。比如:
# 取出value值最小的键值对
min_price = min(zip(stocks.values(), stocks.keys()))
print(min_price)
"""
结果:
(10.75, 'FB')
"""
# 按value值的大小排序
stock_sorted = sorted(zip(stocks.values(), stocks.keys()))
print(stock_sorted)
"""
结果:
[(10.75, 'FB'), (37.2, 'HPQ'), (45.23, 'ACME'), (205.55, 'IBM'), (612.78, 'AAPL')]
"""
执行这些计算的时候,需要注意zip()函数创建的是一个只能访问一次的迭代器。执行如下的代码就会产生错误:
price_and_name = zip(stocks.values(), stocks.keys())
min_price = min(price_and_name)
print(min_price)
"""
结果:
(10.75, 'FB')
"""
max_price = max(price_and_name)
print(max_price)
"""
结果:
ValueError: max() arg is an empty sequence
"""
讨论
如果你在一个字典上执行普通的数学运算,你会发现它们仅仅作用于键,而不是值。比如:
min(stocks) # return 'AAPL'
max(stocks) # return 'IBM'
或许你会尝试使用字典的values()方法:
min(prices.values()) # return 10.75
max(prices.values()) # return 612.78
这也不是你想要的,你还想要知道对应的键的信息。
你可以在 min() 和 max() 函数中提供 key 函数参数来获取最小值或最大值对应的键的信息。比如:
min(prices, key=lambda k: prices[k]) # return 'FB'
max(prices, key=lambda k: prices[k]) # return 'AAPL'
但是这只返回了键,想要得到value值,还要进行一次查询:
min_value = stocks[min(stocks, key=lambda k: stocks[k])] # return 10.75
max_value = stocks[max(stocks, key=lambda k: stocks[k])] # return 612.78
前面的zip()函数方案通过将字典”反转”为 (值,键) 元组序列来解决了上述问题。 当比较两个元组的时候,值会先进行比较,然后才是键(如果值相同的话,就进行键的大小比较)。 这样的话你就能通过一条简单的语句就能很轻松的实现在字典上的求最值和排序操作了。
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
来源:https://www.cnblogs.com/L999C/p/15721196.html


猜你喜欢
- 一、Socketserver实现FTP,文件上传、下载目录结构1、socketserver实现ftp文件上传下载,可以同时多用户登录、上传、
- 把程序重新写了一遍,日期下拉选择器,可自定义日期范围。使用了一个技巧获取指定月份的天数。演示页面:DateSelector.htm 程序代码
- 相信做过自动化运维的同学都用过REST API接口来完成某些动作。API是一套成熟系统所必需的接口,可以被其他系统或脚本来调用,这也是自动化
- 头疼的挂马事件申请了个免费空间弄了个小站空间还可以二年多了挺稳定的只是从今年年初开始网页老莫名奇妙的被人挂马仔细检查了网站 不存在什么漏洞应
- 1、检测登录状态base.pydef checkLogin(func):""" 查看session
- 你可以通过自定义函数接口 (UDF)来添加函数。自定义函数被编译为目标文件,然后用CREATE FUNCTION 和DROP FUNCTIO
- Python2中编码相关的问题很是让人蛋疼,特别是中文字符。比如本文所述的中文网页GBK编码的诡异问题。现象例如:盲录職氓聭聵,其实网页里面
- 如下所示:a, b, c = 1, 2, 3 # 1.常规 if a>b: &nbs
- 1. 首先VC++的DLL的导出函数定义成标准C的导出函数: #ifdef LRDLLTEST_EXPORTS #define LRDLLT
- Aptana IDE现在已经被重命名为Aptana Studio,这款IDE的背后有着风险投资的支持,旨在给Web开发者
- javascript曾一度被认为是玩具型的语言,因为它太容易上手,而且,javascript曾一度担任为web站点“打杂”的职责。直到Aja
- 环境:Python3.7依赖库:import datetimeimport randomimport requestsimport hash
- 一、死锁简单来说,死锁是一个资源被多次调用,而多次调用方都未能释放该资源就会造成死锁,这里结合例子说明下两种常见的死锁情况。1、迭代死锁该情
- 目录系列教程一、MySQL简介二、MySQL的发展历史三、MariaDB的基本使用1、基本安装与配置2、客户端命令:mysql3、其他客户端
- 1. settings.py文件做开发离不开必定离不开日志, 以下是我在工作中写Django项目常用的logging配置.# 日志配置BAS
- 注:本文以Windos系统上Go SDK v1.17.5进行讲解1.go build命令2.手动案例2.1新建文件在桌面新建一个文件夹Hel
- 断言声明是一种方便的程序调试方式。1、可将断言视为debug工具,Python的实现也符合这种设计理念。assert语句的执行依赖于__de
- python实现监听键盘,供大家参考,具体内容如下实现服务端import picklefrom io import BytesIOimpor
- 本文实例讲述了C#连接Oracle数据库的方法。分享给大家供大家参考。具体实现方法如下://1、添加引用 System.data.oracl
- (一)什么是json:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也