Автозаполненные слова, которые были ранее в списке - PullRequest
0 голосов
/ 27 апреля 2020

Автозаполнение слов, которые были ранее в списке. Этот список был получен с помощью пользовательского ввода.

  1. Пользователь вводит слова, которые их идентифицируют.

Пример: счастливый, ленивый, худой.

Затем я хочу сохранить это в списке, который станет базой данных.

Я сделаю тот же ввод, что и раньше, обновленная версия, которая будет использовать список созданный ранее и автоматически заполняющий любой тег, который пользователь начинает писать

Пример: Если пользователь введет L, все слова с L появятся. Например: Ленивый, Симпатичный, Неудачник.

Пользователь прокручивает вниз с помощью стрелок на клавиатуре, и когда он находит правильное слово, он нажимает клавишу Tab, чтобы выбрать его.

Фактически, в тегах stackoverflow используется версия того, что я хочу

1 Ответ

1 голос
/ 28 апреля 2020

Начиная с «Я просто строю игрушку для удовольствия» и переходя к «Мне нужен ответ, и он идет в производство», вот несколько предложений:

  1. Простейшим кодом будет просто найти все строки, которые начинаются с текущего текста.

    dictionary = ['happy', 'lazy', 'skinny']
    input_so_far = 'L'
    suggestions = [
        word
        for word in dictionary
        if word.lower().startswith(input_so_far.lower())
    ]
    
  2. Если вам нужен код simple'i sh, но нужно полусерьезное решение, которое может справиться с серьезным словарем, вам нужно изучить некоторые правильные структуры данных, такие как B-деревья, или ...

  3. ... если у вас есть текст в база данных (например, PostGreSQL), могут быть встроенные индексы или плагины, которые будут поддерживать текстовый поиск. Но если вам нужно наиболее общее и / или производительное решение ...

  4. ... используйте специальную возможность текстового поиска , например Lucene . Довольно забавно, текстовое автозаполнение - это то, что люди часто делают, поэтому инструменты для обработки текста и быстрого поиска являются обычными и действительно хорошими.

РЕДАКТИРОВАТЬ: В последующем, поскольку похоже, что вы ищете способ сделать это в простом терминале, посмотрите этот другой вопрос , чтобы узнать, как включить отзывчивость при вводе данных пользователем. Не во всех этих решениях есть встроенное автозаполнение (некоторые могут), вопрос больше в том, как получить ввод и что делать с выводом подходов, которые я предлагаю выше.

...