使用字典创建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'
>>> 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'
>>> 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