2015-11-12 2 views
2

Я пытаюсь написать расстояние редактирования python, код, который я написал, это только сравнение двух слов, но как насчет того, если я хочу сравнить слово и список слов?Редактировать расстояние строка и список

Вот мой код:

def fdistance(S1,S2): 
    a = len(S1) 
    b = len(S2) 
    fdn = {} # Global dict 
    for x in range(a+1): 
     fdn[x,0] = x 
    for y in range(b+1): 
     fdn[0,y] = y 

    for x in range(1,a+1): 
     for y in range(1,b+1): 
      if S1[x-1] == S2[y-1]: 
       c = 0 
      else: 
       c = 1     
      fdn[x,y] = min(fdn[x,y-1]+1, fdn[x-1,y]+1, fdn[x-1,y-1]+c) 
    return fdn[x,y] 

Но это только может напечатать расстояние между строкой и строкой. Мой вопрос: если S2 - это список, то как сравнить строку и список?

+0

Как бы вы сравнить строку и список? Что бы вы ожидали, что выход будет, если входной сигнал 'fdistance ('Hello', [1,2,3])'? –

+0

S2 - список содержит строки. Например: fdistance ('hello', ['halo', 'hallo', 'help']) – Andy

+0

У вас есть расстояние для двух строк. Напишите отдельную функцию для сравнения строки и списка строк. –

ответ

2

У вас есть функция для сравнения двух слов.

Для сравнения слова со списком слов:

>>> words = ['halo', 'hallo', 'help'] 
>>> [fdistance('hello', word) for word in words] 
[2, 1, 2] 
Смежные вопросы