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的正则表达式re模块的常用方法
Mar 09 Python
跟老齐学Python之做一个小游戏
Sep 28 Python
python numpy 一维数组转变为多维数组的实例
Jul 02 Python
Python函数式编程指南:对生成器全面讲解
Nov 19 Python
Python笔记之观察者模式
Nov 20 Python
python求质数列表的例子
Nov 24 Python
python socket通信编程实现文件上传代码实例
Dec 14 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
对python中各个response的使用说明
Mar 28 Python
详解Scrapy Redis入门实战
Nov 18 Python
python 实现socket服务端并发的四种方式
Dec 14 Python
详解Java中一维、二维数组在内存中的结构
Feb 11 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中静态变量的使用方法实例分析
2016/12/01 PHP
json跟xml的对比分析
2008/06/10 Javascript
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
js 加密压缩出现bug解决方案
2014/11/25 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
js继承的这6种方式!(上)
2019/04/23 Javascript
vue element-ui之怎么封装一个自己的组件的详解
2019/05/20 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
JavaScript实现单英文金山打字通
2020/07/24 Javascript
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
python进行参数传递的方法
2020/05/12 Python
python 实现控制鼠标键盘
2020/11/27 Python
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
美国时尚假发购物网站:Wigsbuy
2019/04/06 全球购物
分公司总经理岗位职责
2014/07/30 职场文书
授权委托书格式
2014/07/31 职场文书
个人整改措施书面材料
2014/10/24 职场文书
2014教师专业技术工作总结
2014/12/03 职场文书
交通事故被告代理词
2015/05/23 职场文书
七年级作文之下雨天
2019/12/23 职场文书