Coincidencia de prefijos en Python usando el módulo pytrie

Dada una lista de strings y una substring de valor de prefijo, ¿buscar todas las strings de la lista de strings dada que contiene el valor dado como prefijo? Ejemplos:

Input : arr = ['geeksforgeeks', 'forgeeks', 
               'geeks', 'eeksfor'], 
       prefix = 'geek'
Output : ['geeksforgeeks','geeks']

Un enfoque simple para resolver este problema es recorrer la lista completa y hacer coincidir el prefijo dado con cada string una por una, imprimir todas las strings que contienen el valor dado como prefijo. Tenemos una solución existente para resolver este problema utilizando Trie Data Structure . Podemos implementar Trie en python usando el módulo pytrie.StringTrie() .

Crear, insertar, buscar y eliminar en pytrie.StringTrie() ?

  • Crear: trie=pytrie.StringTrie() crea una estructura de datos trie vacía.
  • Insertar: trie[key]=value , key son los datos que queremos insertar en trie y value es similar al depósito que se agrega justo después del último Node de la clave insertada y este depósito contiene el valor real de la clave insertada.
  • Buscar: trie.values(prefix) , devuelve la lista de todas las claves que contienen el prefijo dado.
  • Eliminar: del trie[key] , elimina la clave especificada de la estructura de datos trie.

Nota: para instalar el paquete pytrie , use este comando pip install pytrie –user desde la terminal en Linux

Python3

# Function which returns all strings
# that contains given prefix
from pytrie import StringTrie
 
def prefixSearch(arr,prefix):
     
    # create empty trie
    trie=StringTrie()
 
    # traverse through list of strings
    # to insert it in trie. Here value of
    # key is itself key because at last
    # we need to return
    for key in arr:
        trie[key] = key
 
    # values(search) method returns list
    # of values of keys which contains
    # search pattern as prefix
    return trie.values(prefix)
 
# Driver program
if __name__ == "__main__":
    arr = ['geeksforgeeks','forgeeks','geeks','eeksfor']
    prefix = 'geek'
    output = prefixSearch(arr,prefix)
    if len(output) > 0:
        print (output)
    else:
        print ('Pattern not found')

Producción:

['geeksforgeeks','geeks']

Este artículo es una contribución de Shashank Mishra (Gullu) . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *