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批量修改文件名的实现代码
Sep 01 Python
Python实现的数据结构与算法之双端队列详解
Apr 22 Python
微信跳一跳python代码实现
Jan 05 Python
python微信跳一跳系列之棋子定位颜色识别
Feb 26 Python
使用NumPy和pandas对CSV文件进行写操作的实例
Jun 14 Python
Python一个简单的通信程序(客户端 服务器)
Mar 06 Python
python制作简单五子棋游戏
Jun 18 Python
Django ORM 常用字段与不常用字段汇总
Aug 09 Python
python matplotlib库绘制散点图例题解析
Aug 10 Python
Python处理PDF与CDF实例
Feb 26 Python
python实现剪贴板的操作
Jul 01 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 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加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
2019/07/22 PHP
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
2013/10/21 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
JS前后端实现身份证号验证代码解析
2020/07/23 Javascript
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
Python导入oracle数据的方法
2015/07/10 Python
Python爬取京东的商品分类与链接
2016/08/26 Python
使用Python来开发微信功能
2018/06/13 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
python科学计算之numpy——ufunc函数用法
2019/11/25 Python
python3 Scrapy爬虫框架ip代理配置的方法
2020/01/17 Python
python ETL工具 pyetl
2020/06/07 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
2018/01/10 HTML / CSS
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
小学生三分钟演讲稿
2014/08/18 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
教师求职自荐信范文
2015/03/04 职场文书
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL