如何使用字典替代If-Else

使用字典创建If-Else函数的简洁代码

动机

您可能经常使用Python的字典。 但是,您是否释放了字典的全部功能来创建更有效的代码? 如果您不知道可以创建有序词典,将多个词典分组到一个映射中,创建只读词典,则可以在此处找到更多信息

本文将重点介绍如何使用Python的词典替代if-else语句

该图片由 Gerd Altmann Pixabay上发布

使用默认值的红利来削减If-Else语句

想象一下,我们在杂货店中有物品的价格表:

price_list = { <br> 'fish' : 8 , <br> 'beef' : 7 , <br> 'broccoli' : 3 , <br> }

我们想打印商品的价格,但希望并非每个商品都在price_list中,因此我们决定创建一个函数:

def find_price( item ):<br>    if item in price_list:<br>        return 'The price for {} is {}'.format( item , price_list[ item ])<br>    else :<br>        return 'The price for {} is not available'.format( item )
& gt ;& gt ;& gt ; find_price( 'fish' )<br> 'The price for fish is 8'
&gt;&gt;&gt; find_price( 'cauliflower ')<br> 'The price for cauliflower is not available'

聪明。 if-else语句完全符合我们的要求:当该项不可用时,返回另一个值。 但是我们两次查询字典并使用两个语句返回几乎相同的东西。 我们可以做得更好吗? 有没有一种方法,如果该项目不在列表中,则将返回默认值? 幸运的是,有一种方法可以通过Python的名为get()的字典方法来实现。

def find_price (item) :<br>    return 'The price for {} is {}' .format(item, price_list.get(<br>        item, 'not available' ))

.get()查找一个键,并使用不存在的键返回默认值。 该代码肯定看起来更短,但它的执行效果与我们想要的一致吗?

& gt ;& gt ;& gt ; find_price( 'fish' )<br> 'The price for fish is 8'
&gt;&gt;&gt; find_price( 'cauliflower ')<br> 'The price for cauliflower is not available'

整齐!

但是,我可以将Dict与不涉及字典的功能一起使用吗?

好问题。 让我们处理一个完全不涉及字典的示例。

假设您要创建一个返回两个数字之间的运算值的函数。 所以这就是你想出的:

def operations (operator, x, y) :<br>    if operator == 'add' :<br>        return x + y<br>    elif operator == 'sub' :<br>        return x - y<br>    elif operator == 'mul' :<br>        return x * y<br>    elif operator == 'div' :<br>        return x / y
& gt ;& gt ;& gt ; operations ('mul', 2 , 8 ) <br> 16

在这里看字典更令人印象深刻:

def operations(operator, x , y ): <br>    return { <br>        'add' : lambd a: x + y , <br>        'sub' : lambd a: x - y , <br>        'mul' : lambd a: x * y , <br>        'div' : lambd a: x / y , <br>    }. get (operator, lambd a: 'Not a valid operation' )()

操作员的姓名成为键,lambda有效地将功能浓缩为词典的值。 如果找不到键,则get()返回默认值。 让我们检查一下我们的功能:

& gt ;& gt ;& gt ; operations( 'mul' , 2 , 8 )<br> 16 <br>& gt ;& gt ;& gt ; operations( 'unknown' , 2 , 8 )<br> 'Not a valid operation'

结论

恭喜你! 您将学习如何将字典用作if-else语句的替代方法。 那么什么时候可以运用这些技巧? 如果您认识到if-else语句是重复的,那么考虑使用字典可能是一个好主意。 当然,这种技术不会在每种情况下都适用,但是在工具箱中选择另一种技术将是有益的。

我喜欢写一些基本的数学和编程概念,并喜欢使用不同的数据科学工具。 查看我的 博客 以获取有关我最新文章的更新。 您也可以在 LinkedIn Twitter上 与我联系

From: https://hackernoon.com/how-to-use-dictionaries-as-an-alternative-to-if-else-pja537hp

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值