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使用opencv读取图片的实例
Aug 17 Python
python学习必备知识汇总
Sep 08 Python
用TensorFlow实现多类支持向量机的示例代码
Apr 28 Python
Python读写docx文件的方法
May 08 Python
Flask实现图片的上传、下载及展示示例代码
Aug 03 Python
基于树莓派的语音对话机器人
Jun 17 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
Aug 19 Python
Python3批量移动指定文件到指定文件夹方法示例
Sep 02 Python
python中绕过反爬虫的方法总结
Nov 25 Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 24 Python
使用numpy实现矩阵的翻转(flip)与旋转
Jun 03 Python
浅析Python中的随机采样和概率分布
Dec 06 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
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
jQuery下的动画处理总结
2013/10/10 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
js实现文字闪烁特效的方法
2015/12/17 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
深入剖析Node.js cluster模块
2018/05/23 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
python 实现波浪滤镜特效
2020/12/02 Python
python集合的新增元素方法整理
2020/12/07 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
日语专业毕业生求职信
2013/12/04 职场文书
小区门卫管理制度
2014/01/29 职场文书
数学检讨书1000字
2014/02/24 职场文书
欢迎横幅标语
2014/06/17 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python
关于vue-router-link选择样式设置
2022/04/30 Vue.js