Imprima anagramas juntos en Python usando Lista y Diccionario

Dada una serie de palabras, imprimir todos los anagramas juntos? Ejemplos:

Input : arr = ['cat', 'dog', 'tac', 'god', 'act']
Output : 'cat tac act dog god'

Este problema tiene una solución existente, consulte Anagramas y Dada una secuencia de palabras, imprima todos los anagramas juntos . Resolveremos este problema en python usando estructuras de datos List y Dictionary . El enfoque es muy simple:

  • Recorrer la lista de strings.
  • Ordene cada string en orden ascendente y considere este valor ordenado como Clave y el valor original como Valor de la clave correspondiente. Verifique si la clave no está presente en el diccionario, lo que significa que está ocurriendo por primera vez, así que asigne una lista vacía a Clave y agregue el valor en ella, si la clave ya está presente, simplemente agregue el valor.
  • Ahora cada tecla contendrá una lista de strings que son anagramas juntas.

Implementación:

Python3

# Function to return all anagrams together
def allAnagram(input):
     
    # empty dictionary which holds subsets
    # of all anagrams together
    dict = {}
 
    # traverse list of strings
    for strVal in input:
         
        # sorted(iterable) method accepts any
        # iterable and returns list of items
        # in ascending order
        key = ''.join(sorted(strVal))
         
        # now check if key exist in dictionary
        # or not. If yes then simply append the
        # strVal into the list of it's corresponding
        # key. If not then map empty list onto
        # key and then start appending values
        if key in dict.keys():
            dict[key].append(strVal)
        else:
            dict[key] = []
            dict[key].append(strVal)
 
    # traverse dictionary and concatenate values
    # of keys together
    output = ""
    for key,value in dict.items():
        output = output + ' '.join(value) + ' '
 
    return output
 
# Driver function
if __name__ == "__main__":
    input=['cat', 'dog', 'tac', 'god', 'act']
    print (allAnagram(input))
Producción

cat tac act dog god 

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 *