2012-03-20 3 views
0

Je développe un type d'application de dictionnaire en utilisant python. Dans mon code, il y a une liste qui consiste en un ensemble trié de chaînes. quand un utilisateur donne du texte, je veux obtenir toute la chaîne commençant par la chaîne donnée. En d'autres termes, je veux juste suggérer des mots pendant que l'utilisateur tape. Exemple: Si l'utilisateur a tapé le mot "sub", je veux enlever toute la chaîne de la liste commençant par la sous-chaîne "sub".Rechercher une liste de chaînes avec une sous-chaîne donnée en python

Quelqu'un peut-il me donner un algorithme pour faire cela? Merci a tous.

+0

cette caractéristique est généralement appelée * auto-complète *; cependant, si vous interrogez un moteur de recherche Internet pour "python et" auto-complete ", la plupart des résultats se rapporteront à la syntaxe python auto-complète pour les éditeurs de texte – doug

+0

Considérer le codage Huffman comme matière à réflexion sur ce problème: http://en.wikipedia.org/wiki/Huffman_coding – wberry

+0

Possible copie: http://stackoverflow.com/questions/2332028/what-is-anfficient-search-algorithm-to-provide-auto-completion –

Répondre

1

En fonction de la taille de la liste, vous pouvez simplement parcourir la liste et utiliser la fonction de chaîne startswith() pour obtenir le résultat. Si c'est trop lent, un moyen commun est d'utiliser un prefix tree.

+0

Merci. pense qu'il résout mon problème :) – Malaka

0

Ce dont vous avez besoin est une structure de données trie, ce qui est parfait pour ce que vous cherchez. Votre code doit gérer de lourdes lectures/récupérations. Cherchez trie. si vous avez besoin d'une mise en œuvre, faites-le moi savoir.

Questions connexes