Python: combinación de reemplazo de caracteres

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)) 
Producción

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

Deja una respuesta

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