2015-09-27 6 views
0

У меня есть следующий словарь:Python словарь Fuzzy Match на клавишах

classes = {'MATH6371': 'Statistics 1', 'COMP7330': 'Database Management', 
'MATH6471': 'Statistics 2','COMP7340': 'Creative Computation' } 

И я пытаюсь сделать raw_input нечеткое матч на словарных ключей. Например, если я типа в «математике», результат будет статистика 1 и 2. Статистика

У меня есть следующий код, но он соответствует только ключи именно:

def print_courses (raw_input): 
    search = raw_input("Type a course ID here:") 
    if search in classes: 
     print classes.get(search) 
    else: 
     print "Sorry, that course doesn't exist, try again" 

print_courses(raw_input) 

Благодарности

ответ

0

здесь вы идете:

>>> search = 'math' 
>>> result = [classes[key] for key in classes if search in key.lower()] 
['Statistics 2', 'Statistics 1'] 
+0

защиту print_courses (raw_input): поиск = raw_input ("Введите курс ID здесь:") , если поиск в классах: search = [classes [key] для ключа в классах, если поиск в key.lower()] else: print «Извините, этого курса не существует, попробуйте еще раз» print_courses (raw_input) # Единственный результат, получение «Извините, этого курса не существует, попробуйте еще раз» – Andrew

+0

@ Андрей избавиться от 'if statement', проверьте, не вернулся ли возвращенный массив. – Sait

+0

Я удалил оператор if, который затем IDE предложил мне удалить оператор else. Когда я запускал скрипт, ничего не выводило бы. – Andrew