大家好,假设我想用字典替换一个大的el-ifs语句。简化版本如下:
def functionA(a1, a2, a3):
results = {
'case1': a2/a3,
'case2': 1,
...
}
return results[a1]
所以a1将是一个字符串('case1'或'case2'或...),问题是在某些情况下,a3可能是0,所以结果字典无法定义(在所有这些情况下,a1都不是'case1')。例如:
functionA('case2', 1.0, 3.0)
Out[81]: 1
functionA('case2', 1.0, 0.0)
ZeroDivisionError: integer division or modulo by zero
所以在第二种情况下,我期望1,但我得到了一个错误。
一种可能的解决办法是:
def functionA(a1, a2, a3):
results = {
'case1': str(a2) + '/' + str(a3),
'case2': str(1),
}
return eval(results[a1])
由于我有一个复杂计算的多个案例,有没有更好的解决方案?
如果只是一个值,你可以用一个简单的If-else。
def functionA(a1, a2, a3):
if a3:
case1_value = a2/a3
else:
case1_value = a2
results = {
'case1': case1_value,
'case2': 1,
...
}
return results[a1]
或者使用这个if-else条件创建一个dvision函数,并在dict值中使用它。
您可以在字典中使用三元运算符
def functionA(a1, a2, a3):
results = {
'case1': a2 if a3==0 else a2/a3,
'case2': 1
}
return results[a1]
链接:https://repl.it/NRkd
def functionA(a1, a2, a3):
results = {
'case1': a2 / a3 if a3 != 0.0 else a2,
'case2': 1,
# ...
}
return results[a1]
然而,我建议不要采用这种方法,因为整个字典必须首先计算,只有一个值。
相反,如果你真的想使用字典,并且它也很有效,我建议:
myproc = {
'case1': lambda a2, a3: a2 / a3 if a3 != 0.0 else a2,
'case2': lambda a2, a3: 1
}
然后:
>>> myproc['case1'](2, 3)
0.6666666666666666
我正在尝试测试一系列端口,并且还设置了一个超时,在该超时中,如果值被命中并且连接还没有建立,它将移动到下一个端口。如果在命中超时值之前建立了连接,我想打印该值。问题是,我试图用一个python脚本在一行中完成它... Python-C“导入套接字;print(socket.socket(socket.af_inet,socket.sock_stream).create_connection(('1
本文向大家介绍浅谈python字典多键值及重复键值的使用,包括了浅谈python字典多键值及重复键值的使用的使用技巧和注意事项,需要的朋友参考一下 在python中使用字典,格式如下: dict={ key1:value1 , key2;value2 ...} 在实际访问字典值时的使用格式如下: dict[key] 多键值 字典的多键值形式如下: dict={(ke11,key12):value
本文向大家介绍python字典多键值及重复键值的使用方法(详解),包括了python字典多键值及重复键值的使用方法(详解)的使用技巧和注意事项,需要的朋友参考一下 在Python中使用字典,格式如下: 在实际访问字典值时的使用格式如下: 多键值 字典的多键值形式如下: 在实际访问字典里的值时的具体形式如下所示(以第一个键为例): 或者是: 以下是实际例子: 多值 在一个键值对应多个值时,格式: 访
问题内容: 我需要使用字典来过滤数据帧,该字典的键是列名,值是我要过滤的值: 但是我想做些事情 但这会多次过滤数据帧,一次过滤一个值,而不是一次应用所有过滤器。有没有办法以编程方式进行? 编辑:一个例子: 给 但预期结果是 仅应选择最后一个。 问题答案: IIUC,您应该可以执行以下操作: 通过制作一个系列来与以下项目进行比较: 选择以下内容的相应部分: 查找它们匹配的位置: 查找它们 都 匹配的
rank ▲ ✰ vote url 11 867 379 1107 url 用字典的值对字典进行排序 我有个字典,字典的值来自于数据库:一个是字符串,一个是数字.字符串是唯一的,所以键就是字符串. 我可以用键来排序,但是怎么用值来排序呢? 注:我已经看过另一个问题怎样对列表中的字典的键值对字典进行排序?,或许这种方法可以,但是我确实只需要一个字典,我想看看还有其他更好的方法. 对字典进行排序是不可
我有一个函数可以返回三个值中的一个:a、b或c。 我需要根据:A、B或C的返回值执行不同的语句。据我所知,最好的方法是: 如果不引入这个新变量,是否有其他方法来计算的返回值<也许是这样的吧?