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实现带声音的摩斯码翻译实现方法
May 20 Python
python数组复制拷贝的实现方法
Jun 09 Python
Python实现Logger打印功能的方法详解
Sep 01 Python
django实现用户登陆功能详解
Dec 11 Python
selenium python 实现基本自动化测试的示例代码
Feb 25 Python
计算机二级python学习教程(1) 教大家如何学习python
May 16 Python
python绘图模块matplotlib示例详解
Jul 26 Python
Python队列RabbitMQ 使用方法实例记录
Aug 05 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
Feb 26 Python
Python借助with语句实现代码段只执行有限次
Mar 23 Python
Python 的演示平台支持 WSGI 接口的应用
Apr 20 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 foreach 使用&(与运算符)引用赋值要注意的问题
2010/02/16 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
php常量详细解析
2015/10/27 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
用js来解决ajax读取页面乱码
2010/11/28 Javascript
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
Jquery 实现弹出层插件
2015/01/28 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
微信小程序实现文字跑马灯效果
2020/05/26 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
[16:14]教你分分钟做大人:米拉娜(HEROS)
2014/11/24 DOTA
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
在Django的session中使用User对象的方法
2015/07/23 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
Python数据库的连接实现方法与注意事项
2016/02/27 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
使用django实现一个代码发布系统
2019/07/18 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
Python获取时间戳代码实例
2019/09/24 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
AmazeUI 列表的实现示例
2020/08/17 HTML / CSS
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
银行实习推荐信
2015/03/27 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
2016新年晚会开场白
2015/12/03 职场文书