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))
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