Python: combinación de valores de diccionario de tamaño K

A veces, mientras trabajamos con los diccionarios de Python, podemos tener un problema en el que necesitamos extraer la combinación del valor de cierta clave de tamaño K. Esto suele ser cuando los valores están en forma de strings. Esto puede tener aplicación en la programación día-día. Analicemos una forma en que se puede realizar esta tarea.
 

Entrada : test_dict = {‘a’: ‘a’, ‘b’: ‘b’, ‘c’: ‘c’, ‘d’: ‘d’} 
Salida : [‘aaa’, ‘bbb’, ‘ccc ‘, ‘ddd’]
Entrada : test_dict = {‘a’ : ‘abcd’, ‘b’ : ”, ‘c’ : ”, ‘d’ : ”} 
Salida : [‘aaa’, ‘aab’, ‘aac ‘, ‘aad’] 
 

Método: Usar recursividad + función generadora + rendimiento 
La combinación de las funcionalidades anteriores se puede usar para resolver este problema. En este, realizamos la tarea de combinar todas las posibles usando recursividad. La función de generador se usa para crear valores dinámicamente y volver a la función de llamada usando yield.
 

Python3

# Python3 code to demonstrate working of
# Dictionary values combination of size K
# Using yield + generator function + recursion
 
def gen_strs(chr_key, test_dict, K):
    def hlpr(s):
        if len(s) == K:
            yield s
        elif len(s) < K:
            for ltr in test_dict[s[-1]]:
                yield from hlpr(s + ltr)
    for ltr in chr_key:
        yield from hlpr(ltr)
 
# initializing dictionary
test_dict = {'a' : 'abc', 'b' : 'bd', 'c' : 'c', 'd' : 'ab'}
 
# printing original dictionary
print("The original dictionary : " + str(test_dict))
 
# initializing K
K = 3
 
# initializing character keys
chr_key = 'abcd'
 
# Dictionary values combination of size K
# Using yield + generator function + recursion
res = []
for ele in gen_strs(chr_key, test_dict, K):
    res.append(ele)
 
# printing result
print("The extracted combinations : " + str(res))
Producción : 

El diccionario original: {‘b’: ‘bd’, ‘a’: ‘abc’, ‘d’: ‘ab’, ‘c’: ‘c’} 
Las combinaciones extraídas: [‘aaa’, ‘aab’, ‘aac’, ‘abb’, ‘abd’, ‘acc’, ‘bbb’, ‘bbd’, ‘bda’, ‘bdb’, ‘ccc’, ‘daa’, ‘dab’, ‘dac’, ‘dbb ‘, ‘BD’] 

 

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 *