valid = {'Temp': [10, 55], 'rain_percent': [40, 90]}
Temp = 30.3
Raining = 86. 88
if int(Temp) not in range(valid['Temp'][0], valid['Temp'][1]):
print "Bad Temp readings"
if int(Raining) not in range(valid['rain_percent'][0], valid['rain_percent'][1]):
print "Bad Rain Percentage readings"
这就是我检查变量Temp
,Raining
是否在我的keys
词典中相应valid
的值范围内的方法。但这里的问题是我必须使用valid['Temp'][0]
,valid['Temp'][1]
使用索引0
和1
对其进行硬编码。我知道在python中你不应该对任何索引进行硬编码,直到没有这样做就没有选择。如果没有硬编码索引,有没有更好的方法来实现相同的输出?
答案 0 :(得分:2)
我可能会在这里使用操作员链接并完全放弃范围业务:
lower_valid_temp, upper_valid_temp = valid['Temp']
if lower_valid_temp <= Temp <= upper_valid_temp:
print "..."
作为一个额外的好处,这比创建一个列表(通过range
)然后迭代它以找到(或找不到)值(通过in
opeartor)<更有效率< / p>