[PY3]——怎样在数据字典中执行一些计算操作(比如求最大值、排序等)

问题

怎样在数据字典中执行一些计算操作(比如求最小值、最大值、排序等等)?

解决方案

zip( )

1. 为了对字典值执行计算操作,通常需要使用 zip() 函数先将键和值反转过来

2. 类似的,也可以使用 zip() 和 sorted() 函数来排列字典数据

prices = {
    ‘ACME‘: 37.20,
    ‘AAPL‘: 612.78,
    ‘IBM‘: 205.55,
    ‘HPQ‘: 37.20,
    ‘FB‘: 10.75
}

print(min(prices),max(prices))  #直接对字典执行普通的数学运算,其只会对key操作
AAPL IBM
print(min(prices.values()),max(prices.values())) #可通过字典的values函数解决,但输出时只能看到values 
10.75 612.78
print(min(prices,key=lambda x:prices[x])) #可通过min/max的key属性函数解决,但输出同样不好看 
FB
print(min(zip(prices.values(),prices.keys())))    #先通过zip()将字典”反转”为(value,key)的元组序列 
(10.75, ‘FB‘)
print(sorted(zip(prices.values(),prices.keys())))   #若恰巧出现values相同的情况,则根据key的排序结果返回  [(10.75, ‘FB‘), (37.2, ‘ACME‘), (37.2, ‘HPQ‘), (205.55, ‘IBM‘), (612.78, ‘AAPL‘)]

3. 执行这些计算的时候,需要注意的是 zip() 函数创建的是一个只能访问一次的迭代器

prices_and_names=zip(prices.values(),prices.keys())

print(max(prices_and_names))
(612.78, ‘AAPL‘)

print(max(prices_and_names))   #第二次再用就报错了
ValueError: max() arg is an empty sequence
时间: 2024-08-08 22:07:44

[PY3]——怎样在数据字典中执行一些计算操作(比如求最大值、排序等)的相关文章

Shell脚本中执行sql语句操作

这篇文章主要介绍了Shell脚本中执行sql语句操作mysql的5种方法,本文讲解了将SQL语句直接嵌入到shell脚本文件中.命令行调用单独的SQL文件.使用管道符调用SQL文件等方法,需要的朋友可以参考下 对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的结果美化,需要进一步完善和调整.以下为具体的示例及其方法. 1.将SQL语句直接嵌入到sh

在sqlite中执行'in'查询操作,如何使用selectionargs匹配多个值

在安卓开发中,经常使用到sqlite作为本地持久化存储的解决方案.在androidSDK中,已经为我们提供了各种各样的增.删.改.查的api,尽管我们可以自己写sql语句然后执行db.rawsql(sql,null)方法,但这种方法有一些风险,那就是拼接的关键字有可能是非法的,这样会造成很多意想不到并且很危险的后果.因此,建议使用sdk提供的api来做数据库操作,android已经为我们屏蔽了这一层风险. 在使用sqlite查询时,我们经常会使用"in"操作符来进行查询,如 selec

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction .

Microsoft SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具,用于将数据从一个表移动到另一个表(表既可以在同一个服务器上,也可以在不同服务器上).SqlBulkCopy 类允许编写提供类似功能的托管代码解决方案.还有其他将数据加载到 SQL Server 表的方法(例如 INSERT 语句),但相比之下 SqlBulkCopy 提供明显的性能优势. 使用 SqlBulkCopy 类只能向 SQL Server 表写入数据.但是,数据源不限于 SQL Server:可

【Win 10 应用开发】在App所在的进程中执行后台任务

在以往版本中,后台任务都是以独立的专用进程来运行,因此,定义后台任务代码的类型都要位于 Windows 运行时组件项目中. 不过,在14393中,SDK 作了相应的扩展,不仅支持以前的独立进程中运行后台任务,也允许后台任务与应用程序位于同一个进程中执行,即单进程后台任务(Single – Process). 听起来很高深?其实很Easy,和以往的多进程模式的后台任务差不多,只是有以下两点不同: 对于独立进程的后台任务,实现方法是实现 IBackgroundTask 接口,然后实现 Run 方法:

[笔记][Java7并发编程实战手册]4.4 在执行器中执行任务并返回结果Callable、Future

[笔记][Java7并发编程实战手册]系列目录 简介 执行框架(Executor Framework)的优势之一就是,可以在运行并发任务的时候返回结果.但是需要以下两个类来实现功能: 1. 接口 Callable<V> 返回结果并且可能抛出异常的任务.实现者定义了一个不带任何参数的叫做 call 的方法. Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的.但是 Runnable 不会返回结果,并且无法抛出经过检查的异常. Executors 类

python中执行字符串形式的语句和字符串形式的表达式方法(即exec和eval方法)

前阵子一直在思考一个问题,就是如何让用户在图形界面上输入的代码(输入的代码为字符串),成为代码的一部分而运行起来,恰逢看python爬虫的视频教程的时候,看到了使用eval函数,之后查找到了该文章,解决了我思考的问题. @文章来源:https://my.oschina.net/duhaizhang/blog/66048 Python有时需要动态的创造Python代码,然后将其作为语句执行  或  作为表达式计算. exec用于执行存储在字符串中的Python代码.   1. 语句与表达式的区别:

job中执行每行

 有时,我们需要job或转换执行多次,且每次传入的参数都不同.假如你正在做数据迁移的工作,需要导入每天的旧数据,则需要一个job根据指定的日期导入数据,该日期被指定作为参数,如果我们需要导入从一个起始日期到昨天所有的旧数据,手工运行job是痛苦的也是错误的做法,kettle是可以首先计算正确的日期然后根据每个日期运行导入job. 在主job中,首先运行返回日期转换(每个日期作为一行),实际导入数据的job放在转换的后面执行,并且根据转换的结果执行每一行,job可以被设置从一个结果字段中获取参

在ASP.NET应用中执行后台任务

为什么要在ASP.NET应用中执行后台任务? 主要是考虑使用后台任务来处理CPU或IO密集的计算. 下面是一些常见的后台任务: 大量的提醒和新闻邮件发送 图片和视频处理(比如批量创建缩略图.格式转换) 从外部文件导入大量数据或导出数据(RSS聚合) 文件操作(创建归档.清理临时文件.日志文件维护) 定时生成自动化报告 数据库维护 -- ASP.NET不知道任何后台线程比如一个计时器或者其他,它只知道和request相关的操作.事实上,在后台长时间的运行某些任务实在不是web server该做的事

CDH5.12.0 中扩容增加计算节点

CDH5.12.0 中扩容增加计算节点 标签(空格分隔): 大数据平台构建 一: 环境准备 二: 增加节点环境系统初始化 三: 增加节点关于CDH5.12.0环境配置 四: 在CM 上面节点增加 一:环境的概述与准备 概述: 很多时候,企业的大数据环境(CDH5.12.0),根据使用的时间越来越长,空间会有不足的情况,集群的计算 能力也因此下降, 此时需要对将大数据的 集群环境进行扩容 增加计算节点. 1.1 系统逻辑部署图 1.2 安装文件详细信息列表: CM: cloudera-manage