我使用dictionary
作为if/elif
结构的替代方案,如下所示:
newValue = {
'int': param.value + (random.choice((-1, 1)) *
random.randint(1, param.maxChange)),
'float': param.value + random.uniform(-param.maxChange,
param.maxChange),
'bool': not param.value
}[param.dataType]
但是当param.dataType
是'float'
时,它访问'int'
值。如果我使用if/elif
结构,它将按预期工作。在
dict表格可能有什么问题?我使用的是python2.7
编辑:并不是因为它访问了错误的键。我得到一个属于'int'代码块的异常,所以我认为它试图将值从'int'赋值给newValue。在
在代码中,首先实例化字典,然后添加}条目。作为添加条目的一部分,将计算
'int'
、'float'
和{int
、param.value + (random.choice((-1, 1)) * random.randint(1, param.maxChange))
的表达式以及其他表达式。如果参数的数据类型不正确,这将导致问题。要解决这个问题,您可以尝试以下方法:(未测试,因为您没有提供有效的示例)现在,条目保存lambda函数,代码只应在调用一次时求值。在
此外,每次运行此代码时都会创建字典。如果这部分代码运行多次,那么创建一次字典然后多次使用它应该更有效。在
相关问题 更多 >
编程相关推荐