Dada una string y un diccionario con caracteres asignados a la lista de valores de caracteres de reemplazo, construya todas las strings posibles después de reemplazar los caracteres presentes con valores asignados.
Entrada : test_str = «geeks», test_dict = {‘s’: [‘1’, ‘5’], ‘k’: [‘3’]} Salida: [‘gee31’, ‘geek1’, ‘gee35
‘ , ‘geek5’, ‘gee3s’, ‘geeks’]
Explicación : todos los reemplazos posibles de strings, por ejemplo, en ‘gee35’, k se reemplaza por ‘3’ y s se reemplaza por ‘5’.Entrada : test_str = «geeks», test_dict = {‘s’: [‘1’], ‘k’: [‘3’]} Salida: [‘gee31’, ‘
geek1 ‘, ‘gee3s’, ‘geeks’]
Explicación : todos los reemplazos posibles de strings, por ejemplo, en ‘gee31’, k se reemplaza por ‘3’ y s se reemplaza por ‘1’.
Método: Usar zip() + comprensión de lista + reemplazar() + producto()
La combinación de las funciones anteriores se puede utilizar para resolver este problema. En esto, extraemos todos los caracteres combinados usando product y emparejamos uno a la vez usando zip(), reemplazo usando replace().
Python3
# Python3 code to demonstrate working of # Character Replacement Combination # Using zip() + list comprehension + replace() + product() from itertools import product # initializing string test_str = "geeks" # printing original string print("The original string is : " + str(test_str)) # initializing dictionary test_dict = {'s' : ['1', '2'], 'k' : ['3']} # adding original character to possible characters for key in test_dict.keys(): if key not in test_dict[key]: test_dict[key].append(key) res = [] # constructing all possible combination of values using product # mapping using zip() for sub in [zip(test_dict.keys(), chr) for chr in product(*test_dict.values())]: temp = test_str for repls in sub: # replacing all elements at once using * operator temp = temp.replace(*repls) res.append(temp) # printing result print("All combinations : " + str(res))
The original string is : geeks All combinations : ['gee31', 'geek1', 'gee32', 'geek2', 'gee3s', 'geeks']
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