教你Python字典的妙用,消除繁琐的if判断
off999 2024-09-18 22:40 44 浏览 0 评论
根据不同的条件进行不同的计算或操作,是很常见的需求。Python 有 if 语句可以实现。但是一旦分支很多,多个 if 就是使你眼花缭乱。
我们有许多技巧(套路)来简化这一过程。 我会一连几篇文章,从简单到复杂,教你如何理解和应用这些技巧。
这里,你可以学到很多 Python 知识点的应用:
- 字典
- 枚举
- 装饰器
动态调用不同的函数
先看数据:
- 列[计算方式],决定了列[调整]的计算结果
每一种计算方式如下:
看过我之前文章【为什么你总是学不会Python,入门Python的4大陷阱 】的小伙伴已经学聪明了,为每一种计算单独定义了函数:
但是,该怎么调用这些函数呢?
"很简单呀,判断,然后调用":
- 行9:为了防止出现遗漏的计算方式
这看起来不错,但是,每新增一种方式,就要在这里追加一个判断,一旦分支很多,这里的代码就会非常冗长:
为什么我一直让每一块代码尽可能简短?
因为我们每次处理一个独立小问题会比处理大问题要高效得多,大问题意味着涉及很多小问题。同时解决多个小问题,会让我们的大脑短路。
单独声明映射关系
如果我们可以这样子定义计算方式与函数的关系,那就很舒服了:
"这看着有点眼熟,不就是字典吗?"
对,字典就是用来表达这种一对一关系的最佳结构。
你可以把字典当作是一个过目不忘(死记硬背)的记忆高手,只要他过一遍数据之后,你给他一个 key 值,他能马上找出对应的 value 值给你。
于是,我们可以把计算方式与定义的每个函数给他记忆:
接下来,真正处理每一行数据的时候,只需要让他(字典)取出函数,然后调用即可:
- 行2-4:特别要注意,字典的 value 我们只是给了函数名字,千万别在后面加括号,括号是表示执行函数?。现在我们不需要执行函数呢
- 调用的时候,别忘记给函数传入需要计算的指标
- 不仅代码简单了,如果你有留意左下角的运行时间,你会发现这种方式比之前的方式提速了
现在我们的代码挺不错,如果数据中出现了新的计算方式,但我们忘记加入字典,那么代码运行就会报错:
- 行4:注释掉,相当于我们忘记定义计算方式C
- 可以看到错误信息,能让我们马上联想到原因
"一举两得,太完美了!"
但是,如果你跟我学习 pandas ,就会知道,pandas 中尽可能避免自己遍历处理数据。
pandas 的简洁程度与计算效率不是我们自己遍历处理可以比得过。
pandas 处理方式真的很完美?
这个例子中,每一种的计算方式的区别仅仅在于后面的系数:
这种情况下,其实我们可以先批量把每一行对应的系数取出来,然后直接计算:
- 注意执行时间,又提速了
别以为这只是 pandas 把 for 遍历给你写了而已,他是基于 numpy 的,而numpy处理时都是基于 c++ 的调用,性能非常快速
这种方式其实也有他的缺点:
- Series.map 方法的确做了字典取值做的事情,但是在他找不到key时,是不会报错的。我们需要后续通过判断 nan 来检查
- 有时候计算逻辑没有这么简单,比如需要看销量是否超过同地区的平均值做出不同的计算分支。这时候使用 pandas 的方式就会感觉逻辑被分散(下一节我们来看看这种情况下的处理)
"那么,之前的字典声明方式,是不是就是这种场景下最通用的方式?"
思考题
用字典声明对应关系其实已经非常好了,但是如果能在定义函数的地方上直接标记对应关系,那么也挺好:
- 不再需要定义字典关系了
怎么可以做到这种效果呢?有兴趣的小伙伴不妨试试。下一节,我们将介绍这种套路
相关推荐
- 爱纯净系统官方的网址(爱纯净官网是哪个)
-
备份步骤: 第一步:点击win10纯净版系统桌面左下角的【Windows】按钮,从打开的扩展面板中找到【设置】按钮点击进入。 第二步:打开win10纯净版64位系统中的设置界面中,点击【更新和安全...
- 最新电脑主机配置清单(2021电脑主机主流配置)
-
1.CPU全志a31s80元主板建议联想乐pad160元显示屏7寸分辨率建议在800*480以上约110元电源接口约0.2元wifi模块约20元蓝牙模块约20元硬盘建议金...
- windows7系统界面(win7界面什么样)
-
关于这个问题,要将Win1系统调成Win7界面,您可以尝试以下几个步骤:1.下载并安装一个Win7主题:在网上搜索并下载一个Win7主题,例如“Windows7ThemeforWin10”,...
- 把文件隐藏了怎么显示出来(文件隐藏起来了怎么找)
-
需要显示出来因为有些文件被系统默认设置为隐藏状态,为了查看或编辑这些文件,需要将它们显示出来。如果你使用Windows操作系统,可以在文件资源管理器中点击“查看”选项卡,然后勾选“隐藏项目”复选框,隐...
- mercury路由器wifi密码(mercury路由器wifi密码忘了怎么办)
-
水星路由器宽带密码查看的方法:一、首先登陆原来路由器管理界面,输入路由器账号密码登陆。二、进入路由器管理界面后,点击进入“备份和载入配置”,然后点击“备份配置文件”,然后将备份的配置文件存放在电脑桌...
- microsoft word产品密钥(微软word产品密钥)
-
产品密钥是由一些字符组成的代码,用于激活对应产品。产品密钥是产品授权的证明,它是根据一定的算法(如椭圆算法)等产生的随机数。当用户输入密钥产品会根据其输入的密钥判断是否满足相应的算法,通过这样来判断,...
- 笔记本显卡推荐(笔记本显卡推荐性价比高)
-
1、微星R7850TF2GD5/OC:这款微星显卡是用GCN架构设计的图形核心,里面有1024个sp单元,执行、输出能力都非常的强悍,能完美地将DX11.1特效呈现出来。它还能够支持驳接各种大型...
- hp系统重装win10(hp怎么重装系统win10)
-
答具体解决方法如下准备工作: 1、下载u启动u盘启动盘制作工具 2、下载win10系统镜像并存入u盘启动盘中 3、硬盘模式更改为ahci模式 安装win10系统操作步骤: 1、首先,我们提...
- 惠普笔记本电脑售后服务(惠普笔记本电脑售后服务维修点)
-
惠普笔记本电脑的售后服务包括全国联保、上门维修、24小时服务热线等多种服务。消费者可以通过官网或客户服务热线轻松预约维修服务,享受专业、高效的技术支持。同时,惠普还提供质保服务和延保服务,保障消费者的...
- 住房公积金管理中心官网(广州住房公积金管理中心官网)
-
按照《住房公积金管理条例》有关规定,住房公积金管理中心性质属于事业单位,隶属事业单位编制。使用手机查询住房公积金的方法。微信查询法1、打开微信,点击进入“我”的页面,在这个页面找到钱包;2、点击进入...
- 远程控制系统(路灯远程控制系统)
-
汽车远程控制系统是一种通过移动终端或其他设备远程控制汽车的系统,可以实现远程锁车/解锁、远程启动车辆、远程启动空调、...
- 惠普1136打印机驱动(惠普1136打印机驱动用的是1130吗)
-
原因:1、可能是安装驱动步骤错了,下载驱动的步骤一定要按步骤检查安装。2、可能是驱动程序兼容性问题,或驱动程序损坏,建议使用驱动管理软件安装,这样简单,而且是最新的,兼容性、稳定性好。3、可能是打印机...
- office2013标准版产品密钥(microsoft office2013产品密钥在哪里能找到)
-
win7/win8/win10系统下VisualStudio2013各个版本的密钥:VisualStudioUltimate2013KEY:BWG7X-J98B3-W34RT-33B3R-...
- win7旗舰版电脑非常卡怎么办
-
针对Windows7旗舰版卡顿的情况,可以尝试以下几种方法来解决:1.升级硬件:如果你的电脑配置较低,可以考虑升级一下硬件,例如更换内存条、加装固态硬盘等。2.清理磁盘:清理电脑中不必要的文件、...
- 随身wifi怎么用的使用教程(随身wifi怎么用的使用教程图解)
-
1、将随身wifi插入电脑端,按照提示操作2、首次安装驱动后,随身wifi会随机生成10位默认密码,每台电脑是不相同的。为方便连接,也可手动设置为相同的密码。3、随身WiFi客户端支持3种手机连接方式...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
使用 python-fire 快速构建 CLI_如何搭建python项目架构
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
