Делаем конкретный пример:
- У вас есть список всех имен в США.
- Вы хотите автоматически предлагать завершения в графическом интерфейсе.
Очевидно, что нужно использовать дерево счисления, чтобы получить список имен для данного префикса. Однако при этом не учитывается информация о частоте. Таким образом, вместо того, чтобы просто 5 лучших результатов были первыми лексическими результатами, я хотел бы получить 5 самых распространенных имен:
например Для префикса dan
(5913, 'Daniel')
(889, 'Danny')
(820, 'Dana')
(272, 'Dan')
(60, 'Dane')
Есть ли алгоритм дерева дерева, который я пропустил? Конечно, идеальная реализация (если она существует) на мой взгляд, на питоне.
ОБНОВЛЕНИЕ: В целом доволен тем, что предложил Paddy3113, хотя я скажу, что он полностью взрывается, когда я передаю ему файл размером 2,6 ГБ, который является одним из файлов, которые я уменьшаю. Глядя на детали, вывод дает некоторое представление:
samz;Samzetta|Samzara|Samzie
samza;Samzara
samzar;Samzara
samzara;Samzara
samze;Samzetta
samzet;Samzetta
samzett;Samzetta
samzetta;Samzetta
samzi;Samzie
samzie;Samzie
# Format - PREFIX;"|".join(CHOICES).
У нас есть еще несколько дней на баунти, так что я все еще ищу убийственное решение. Поскольку речь идет не только о сокращении, но и о поиске.