Dada una lista de strings, asigne cada carácter en strings, a los índices en que ocurre.
Entrada : test_list = [‘gf g’, ‘best’, ‘for’, ‘geek s’]
Salida : {‘g’: [1, 4], ‘f’: [1, 3], ‘s ‘: [2, 4], ‘b’: [2], ‘e’: [2, 4], ‘t’: [2], ‘o’: [3], ‘r’: [3], ‘k’: [4]}
Explicación : Caracteres mapeados con sus índices de elementos que ocurren.Entrada : test_list = [‘gf g’, ‘i s’, ‘best t’, ‘for’, ‘geek s’]
Salida : {‘g’: [1, 5], ‘f’: [1, 4], ‘i’: [2], ‘s’: [2, 3, 5], ‘b’: [3], ‘e’: [3, 5], ‘t’: [3], ‘ o’: [4], ‘r’: [4], ‘k’: [5]}
Explicación : Caracteres mapeados con sus índices de elementos que ocurren.
Método n.º 1: Usar predeterminadodict() + enumerar() + dividir()
La combinación de las funciones anteriores se puede utilizar para resolver este problema. En esto, usamos defaultdict() para obtener una lista vacía para almacenar índices, enumerate() se usa para verificar índices y split() se puede usar para dividir caracteres.
Python3
# Python3 code to demonstrate working of # Charatacter indices Mapping in String List # Using defaultdict() + enumerate() + split() from collections import defaultdict # initializing list test_list = ['g f g', 'i s', 'b e s t', 'f o r', 'g e e k s'] # printing original list print("The original list is : " + str(test_list)) res = defaultdict(set) # loop for assigning indices for idx, ele in enumerate(test_list): for sub in ele.split(): res[sub].add(idx + 1) # dictionary comprehension to remake result res = {key: list(val) for key, val in res.items()} # printing result print("The mapped dictionary : " + str(res))
The original list is : ['g f g', 'i s', 'b e s t', 'f o r', 'g e e k s'] The mapped dictionary : {'g': [1, 5], 'f': [1, 4], 'i': [2], 's': [2, 3, 5], 'b': [3], 'e': [3, 5], 't': [3], 'o': [4], 'r': [4], 'k': [5]}
Método #2: Usar enumerate() + comprensión de diccionario
Esta es otra forma en la que se puede realizar esta tarea. Esto realiza la tarea de manera similar, solo en una línea en la comprensión del diccionario.
Python3
# Python3 code to demonstrate working of # Charatacter indices Mapping in String List # Using enumerate() + dictionary comprehension # initializing list test_list = ['g f g', 'i s', 'b e s t', 'f o r', 'g e e k s'] # printing original list print("The original list is : " + str(test_list)) # using dictionary comprehension to bind result res = {sub : [key + 1 for key, val in enumerate(test_list) if sub in val] for ele in test_list for sub in ele.split()} # printing result print("The mapped dictionary : " + str(res))
The original list is : ['g f g', 'i s', 'b e s t', 'f o r', 'g e e k s'] The mapped dictionary : {'g': [1, 5], 'f': [1, 4], 'i': [2], 's': [2, 3, 5], 'b': [3], 'e': [3, 5], 't': [3], 'o': [4], 'r': [4], 'k': [5]}
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA