Python 使用dict实现switch的操作


Posted in Python onApril 07, 2021

Python3还是没有switch,可以利用if-else来实现,但是非常不方便。使用dict来实现会比较简洁优雅。

# -*- coding: utf-8 -*-
"""
Python利用dict实现switch
""" 
def add(x, y): return x + y  
def subtract(x, y): return x - y           
def multiply(x, y): return x * y 
def divide(x, y):
  assert(y != 0)      
  return x / y 
mapping = {"+": add, "-": subtract, "*": multiply, "/": divide}
 
def cal(x, y, symbol="+"):
  assert(symbol in mapping)
  return mapping.get(symbol)(x, y) 
if __name__ == "__main__":
  result = cal(3, 0, "&")

补充:python 字典dict实现switch case【实际应用】(非dict.get()方法实现)

看了不少帖子,几乎都是采用字典的.get()方法实现,据说有个弊端:“会将字典每个带括号的方法都执行一遍”。

以下方法可避免该弊端,并可以传参。如有不足请指正!

#!/usr/bin/python3 
# conf_cmd = conf_items["cmd"].split(":")[0] 
test_no = "T1"
#test_no = "T2"
#test_no = "T3"
 
id = 1 
def test1(id):
  print("test1:%d" % id)
 
def test2(id):
  print("test2")
 
def test3(id):
  print("test3")
 
funcs = {"T1": test1,
     "T2": test2,
     "T3": test3} 
try:
  func = funcs[test_no]
  func(id)
except Exception:
  pass

输出:

test1:1

补充:Python实现类似switch的分支结构

switch语句相信大家都很熟悉,而且swith语句表达的分支结构比if...elif...else语句表达更清晰,代码的可读性更高,但是在Python中,却没有提供这一个关键字。那我们该如何通过其他方式来实现这类似的结构呢?

虽然没有switch语句,但是我们可以通过Python中的dict即字典来实现类似switch结构的方法

实现代码如下:

def operator(o,x,y):
 result={
     '+' : x+y,
     '-' : x-y,
     '*' : x*y,
     '/' : x/y
  }
 print(result.get(o))
oper=input()//接收从键盘输入的数据
operator(oper,4,2)

运行效果如下所示:

Python 使用dict实现switch的操作

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
详解Python Socket网络编程
Jan 05 Python
Python简单实现TCP包发送十六进制数据的方法
Apr 16 Python
python OpenCV学习笔记直方图反向投影的实现
Feb 07 Python
VSCode下配置python调试运行环境的方法
Apr 06 Python
Python Series从0开始索引的方法
Nov 06 Python
python交易记录链的实现过程详解
Jul 03 Python
Python简易版停车管理系统
Aug 12 Python
Python产生一个数值范围内的不重复的随机数的实现方法
Aug 21 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
Aug 27 Python
Python Numpy中数据的常用保存与读取方法
Apr 01 Python
自己搭建resnet18网络并加载torchvision自带权重的操作
May 13 Python
只用Python就可以制作的简单词云
Jun 07 Python
Python 把两层列表展开平铺成一层(5种实现方式)
Apr 07 #Python
Python获取百度热搜的完整代码
详解Python小数据池和代码块缓存机制
Apr 07 #Python
浅谈Python列表嵌套字典转化的问题
Apr 07 #Python
python pyhs2 的安装操作
Apr 07 #Python
python3 sqlite3限制条件查询的操作
Apr 07 #Python
python实现高效的遗传算法
You might like
图象函数中的中文显示
2006/10/09 PHP
php实现微信公众平台账号自定义菜单类
2014/12/02 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
监控 url fragment变化的js代码
2010/04/19 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
2016/11/07 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
Javascript下拉刷新的简单实现
2017/02/14 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
vue a标签点击实现赋值方式
2020/09/07 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
vue router返回到指定的路由的场景分析
2020/11/10 Javascript
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
Python实现删除文件但保留指定文件
2015/06/21 Python
Python访问纯真IP数据库脚本分享
2015/06/29 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
物流仓储实习自我鉴定
2013/09/25 职场文书
八一建军节部队活动方案
2014/02/04 职场文书
科级干部考察材料
2014/02/15 职场文书
目标管理责任书
2014/04/15 职场文书
钢琴师观后感
2015/06/12 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技