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获取文件版本信息、公司名和产品名的方法
Oct 05 Python
python中的计时器timeit的使用方法
Oct 20 Python
python使用邻接矩阵构造图代码示例
Nov 10 Python
python3 发送任意文件邮件的实例
Jan 23 Python
python3+PyQt5重新实现自定义数据拖放处理
Apr 19 Python
运用PyTorch动手搭建一个共享单车预测器
Aug 06 Python
django实现类似触发器的功能
Nov 15 Python
Python实现钉钉订阅消息功能
Jan 14 Python
Scrapy框架实现的登录网站操作示例
Feb 06 Python
Python 在局部变量域中执行代码
Aug 07 Python
Python文件的操作示例的详细讲解
Apr 08 Python
浅谈Python数学建模之数据导入
Jun 23 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 Rename 更改文件、文件夹名称
2011/05/24 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
如何让PHP编码更加好看利于阅读
2019/05/12 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
Jquery实现Div上下移动示例
2014/04/23 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
JSON字符串和对象相互转换实例分析
2016/06/16 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
Ajax基础知识详解
2017/02/17 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
一些可能会用到的Node.js面试题
2019/06/15 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
浅谈vue的第一个commit分析
2020/06/08 Javascript
python进阶教程之异常处理
2014/08/30 Python
python用post访问restful服务接口的方法
2018/12/07 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
基于多进程中APScheduler重复运行的解决方法
2019/07/22 Python
Python hashlib模块加密过程解析
2019/11/05 Python
Python连接字符串过程详解
2020/01/06 Python
Python PyQt5整理介绍
2020/04/01 Python
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
妇女干部培训方案
2014/05/12 职场文书
新学期开学标语
2014/06/30 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
2015年度团总支工作总结
2015/04/23 职场文书