教你Python字典的妙用,消除繁琐的if判断
off999 2024-09-18 22:40 39 浏览 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 的方式就会感觉逻辑被分散(下一节我们来看看这种情况下的处理)
"那么,之前的字典声明方式,是不是就是这种场景下最通用的方式?"
思考题
用字典声明对应关系其实已经非常好了,但是如果能在定义函数的地方上直接标记对应关系,那么也挺好:
- 不再需要定义字典关系了
怎么可以做到这种效果呢?有兴趣的小伙伴不妨试试。下一节,我们将介绍这种套路
相关推荐
- 鸿蒙系统适配第三方机型(鸿蒙 第三方适配)
-
最新华为官方公布了鸿蒙系统3.0支持的机型名单,具体如下。鸿蒙系统3.0升级名单:1.Mate系列:MateXs2、MateX2、MateXs、Mate40、Mate40Pro、Mate...
- imei怎么下载(imei changer apk)
-
如果您的steam序列号激活了,可以尝试以下方法下载:1.使用steam自带的下载工具,如“下载工具”,在软件的“下载”选项卡中选择“序列号下载”。2.在下载页面中,选择要下载的游戏,然后点击“下...
- 电脑系统优化软件哪个好(系统优化软件排行榜)
-
有必要用,非常好用,WINDOWS优化大师是一个网络上下载率极高的系统维护软件。多年未曾清理过系统和硬盘的电脑,系统内部将产生大量的垃圾文件、临时文件、废旧程序等等win10系统不需要经常更新,关闭...
- 重装系统后硬盘不见了(重装系统后磁盘不见了)
-
硬盘不见可能是因为重装系统时未正确安装驱动程序或未对硬件进行正确设置。你可以按以下步骤排查问题:进入BIOS检查硬盘是否被识别,尝试重新连接数据线和电源线,更新或安装适当的硬件驱动程序,或者使用硬件故...
- 冰封u盘装win7系统教程图解(冰封u盘启动装机教程)
-
1.查找激活工具:通常来说,Win7冰封系统已经包含了必要的驱动,所以如果你的电脑上并没有出现设备错误,那你就可以正常使用。如果你需要添加任何驱动,请尝试从厂商下载相应的驱动并执行自动安装程序。如果...
- uefi模式下找不到硬盘(uefi引导找不到硬盘)
-
首先你的安装盘必须是从UEFI启动的,然后它才能安装为UEFI启动。(条件:Fat32文件系统,efi文件夹)其次你MBR+BIOS的系统想换成GPT+EFI的,分区得做一点改动,腾出来100M的空...
- win7怎么安装蓝牙驱动程序(win7电脑安装蓝牙驱动教程)
-
方法如下: 1、再开始里点击控制版面,点击【硬件和声音】找到【添加设备】 2、之后再选择你要添加的蓝牙耳机。 3、系统就会提示正在与蓝牙适配器连接,然后提示添加成功。 4、点击“开始”-“...
- 怎么装系统win7旗舰版(电脑怎么装win7旗舰版)
-
1、目前支持64位的Wincc版本有:WinccV7Sp3、WinccV11Sp2、WinccV12。2、Wincc的V11与V12两个版本不能共存,即不能同时安装在同一台电脑上。上述这两...
- 怎样恢复桌面图标原样(怎样恢复桌面图标原样显示)
-
桌面图标恢复原样步骤方法如下:1.右键点击图标、并点击‘属性’两字,再点击‘打开文件位置‘2.然后找到文件所在的位置,然后暂时将文件在一旁放着3.然后再去点击‘更换图标’这四个字,找到刚刚打开的文件...
- 消除u盘写保护(怎么解除u盘写保护)
-
如果您的U盘启用了写保护功能,可以尝试以下几种方法来解除写保护:1.检查U盘上的物理写保护开关:部分U盘有一个物理的写保护开关,可以在U盘的外壳上找到。请确保开关处于非写保护状态。2.使用CMD命...
- microsoft国际版(微软国际版bing)
-
win10系统自带的edge浏览器不分国内版和国际版。搜索引擎Bing分为国内版和国际版,区别如下一、迎合不同人群的需求。国际版显得更加个性,他迎合了不同人群的需求,在收缩上更加方便化和智能化,后期可...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习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)
