2014-09-08 3 views
1
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 вы никогда не должны жестко указывать какие-либо индексы, пока нет возможности без этого. Есть ли лучший способ добиться того же выхода без индексов жесткого кодирования?Проверка диапазона из словаря значений

ответ

2

я бы, вероятно, использовать оператор сцепления здесь и воздерживаются диапазон бизнес полностью:

lower_valid_temp, upper_valid_temp = valid['Temp'] 
if lower_valid_temp <= Temp <= upper_valid_temp: 
    print "..." 

В качестве дополнительного бонуса, это будет более эффективным, чем создание списка (через range), а затем итерация над ним, чтобы найти (или не найти) значение (через in opeartor)

Смежные вопросы