2016-11-10 3 views
1

Я экспериментирую с использованием словарей в Python в качестве альтернативы случаям переключения. Я хотел бы использовать диапазон значений в качестве ключа в моем словаре. У меня есть что-то похожее на код ниже:Использование диапазонов как ключей в словарях

dispatcher = { 
    0 < col_value <= .5: "avg", 
    .5 < col_value <= .9: "value", 
} 

for col in self.missing_ratios_dict: 

    self.to_do_list[col] = dispatcher.get(self.missing_ratios_dict[col], "drop") 

missing_ratios_dict является словарь заполняется парами, как «Возраст»: 0,199, «Имя»: 0,0, и так далее.

Что я хотел бы для этого сделать, если значение столбца находится между 0 и .5, чтобы добавить «avg» в мой to_do_list, если он находится между .5 и .9, чтобы добавить «значение» в мой to_do_list , и в противном случае добавить «drop» в мой список to_do_list.

В настоящее время то, что он на самом деле делает, добавляет «значение», если значение равно 0,0 и «падение» в противном случае.

ответ

2

dict не может иметь хешируемый диапазон как ключ. Тем не менее, вы можете создать ключ, обозначающий диапазон в форме tuple, но это бесполезно, поскольку вы не можете напрямую позвонить dict.get(x), чтобы получить значение с ключа с кортежем как (y1, y2) (где y1 < x ключи, чтобы проверить, часть любого диапазона

Я предлагаю вам создать такую ​​функцию для поиска категории:.

def get_type(value): 
    category = None 
    if 0 < value < 0.5: 
     category = "avg" 
    elif 0.5 <= value < 0.8: 
     category = "good" 
    return category 
Смежные вопросы