Как сканировать элементы в массиве, которые имеют самый длинный общий префикс с термином запроса? - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть массив в Python, который выглядит следующим образом ['u1jr00', 'u1jr01', 'u1jr02', 'u1jr03', 'u1jr04', 'u1jr05', 'u1jr06','u1jrbjk'].я пытаюсь найти элемент в этом массиве, который близко соответствует этой строке в запросе u1jrbjvnrqz7.Как я могу просмотреть весь массив и найти элементы с наиболее распространенным префиксом, совпадающим со строкой запроса?Есть ли в Python встроенные функции для сопоставления общих префиксов?

1 Ответ

0 голосов
/ 20 декабря 2018

Вот одна строка:

items = ["abc", "abcd", "abcde", "zasd"]
query = "abcd"
best_match = max((os.path.commonprefix([item, query]), item) for item in items)[1]

Это относится ко всем элементам с одинаковой длиной общего префикса одинаково.Если вы хотите предпочесть меньшие:

best_match = max((os.path.commonprefix([item, query]), -len(item), item) for item in items)[2]
...