Python – Combinaciones de listas de valores clave del diccionario

Dado el diccionario con valores como lista, extrae todas las combinaciones posibles, tanto con claves cruzadas como con valores.

Entrada : test_dict = {“Gfg”: [4, 5], “es”: [1, 2], “Mejor”: [9, 4]}
Salida : {0: [[‘Gfg’, 4], [ ‘es’, 1], [‘Mejor’, 9]], 1: [[‘Gfg’, 4], [‘es’, 1], [‘Mejor’, 4]], 2: [[‘Gfg ‘, 4], [‘es’, 2], [‘Mejor’, 9]], 3: [[‘Gfg’, 4], [‘es’, 2], [‘Mejor’, 4]], 4: [[‘Gfg’, 5], [‘is’, 1], [‘Best’, 9]], 5: [[‘Gfg’, 5], [‘is’, 1], [‘Best ‘, 4]], 6: [[‘Gfg’, 5], [‘is’, 2], [‘Best’, 9]], 7: [[‘Gfg’, 5], [‘is’, 2], [‘Best’, 4]]}
Explicación : Imprime todas las combinaciones posibles de clave con valores y valores cruzados también.

Entrada : test_dict = {“Gfg”: [4], “es”: [1], “Mejor”: [4]}
Salida : {0: [[‘Gfg’, 4], [‘es’, 1] , [‘Best’, 4]]}
Explicación : Imprime todas las combinaciones posibles de clave con valores y valores cruzados también.

Método #1: Usar producto() + zip() + bucle

La combinación de las funciones anteriores se puede utilizar para resolver este problema. En esto, realizamos la primera combinación de claves con todos los valores usando product() y las combinaciones de teclas cruzadas se realizan usando zip() y loop.

Python3

# Python3 code to demonstrate working of 
# Dictionary Key Value lists combinations
# Using product() + zip() + loop
from itertools import product
  
# initializing dictionary
test_dict = {"Gfg" : [4, 5, 7],
             "is" : [1, 2, 9],
             "Best" : [9, 4, 2]}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
temp = list(test_dict.keys())        
res = dict()
cnt = 0
  
# making key-value combinations using product
for combs in product (*test_dict.values()):
       
    # zip used to perform cross keys combinations.
    res[cnt] = [[ele, cnt] for ele, cnt in zip(test_dict, combs)]
    cnt += 1
  
# printing result 
print("The computed combinations : " + str(res)) 
Producción

El diccionario original es: {‘Gfg’: [4, 5, 7], ‘is’: [1, 2, 9], ‘Best’: [9, 4, 2]}
Las combinaciones calculadas: {0: [[‘Gfg’, 4], [‘is’, 1], [‘Best’, 9]], 1: [[‘Gfg’, 4], [‘is’, 1 ], [‘Mejor’, 4]], 2: [[‘Gfg’, 4], [‘es’, 1], [‘Mejor’, 2]], 3: [[‘Gfg’, 4], [‘es’, 2], [‘Mejor’, 9]], 4: [[‘Gfg’, 4], [‘es’, 2], [‘Mejor’, 4]], 5: [[‘ Gfg’, 4], [‘is’, 2], [‘Best’, 2]], 6: [[‘Gfg’, 4], [‘is’, 9], [‘Best’, 9]] , 7: [[‘Gfg’, 4], [‘is’, 9], [‘Best’, 4]], 8: [[‘Gfg’, 4], [‘is’, 9], [‘ Mejor’, 2]], 9: [[‘Gfg’, 5], [‘es’, 1], [‘Mejor’, 9]], 10: [[‘Gfg’, 5], [‘es’ , 1], [‘Mejor’, 4]], 11: [[‘Gfg’, 5], [‘es’, 1], [‘Mejor’, 2]], 12: [[‘Gfg’, 5 ], [‘es’, 2], [‘Mejor’, 9]], 13: [[‘Gfg’, 5], [‘es’, 2], [‘Mejor’, 4]], 14: [ [‘Gfg’, 5], [‘is’, 2], [‘Best’, 2]], 15: [[‘Gfg’, 5], [‘is’, 9], [‘Best’, 9 ]], 16: [[‘Gfg’, 5], [‘is’, 9], [‘Best’, 4]], 17: [[‘Gfg’, 5], [‘is’, 9], [‘Mejor’, 2]], 18: [[‘Gfg’, 7], [‘es’, 1], [‘Mejor’, 9]], 19: [[‘Gfg’, 7], [‘ es’, 1], [‘Mejor’, 4]],20: [[‘Gfg’, 7], [‘is’, 1], [‘Best’, 2]], 21: [[‘Gfg’, 7], [‘is’, 2], [‘Best ‘, 9]], 22: [[‘Gfg’, 7], [‘is’, 2], [‘Best’, 4]], 23: [[‘Gfg’, 7], [‘is’, 2], [‘Mejor’, 2]], 24: [[‘Gfg’, 7], [‘es’, 9], [‘Mejor’, 9]], 25: [[‘Gfg’, 7] , [‘es’, 9], [‘Mejor’, 4]], 26: [[‘Gfg’, 7], [‘es’, 9], [‘Mejor’, 2]]}

Método #2: Usar producto() + bucle

La combinación de las funciones anteriores también se puede utilizar para resolver este problema. En esto, realizamos la tarea de realizar la combinación de teclas internas y cruzadas usando product(). La diferencia es que el contenedor de agrupación es una tupla en lugar de una lista.

Python3

# Python3 code to demonstrate working of 
# Dictionary Key Value lists combinations
# Using product() + loop
from itertools import product
  
# initializing dictionary
test_dict = {"Gfg" : [4, 5, 7],
             "is" : [1, 2, 9],
             "Best" : [9, 4, 2]}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
res = {}
for key, val in test_dict.items():
      
    # for key-value combinations 
    res[key] = product([key], val)
  
# computing cross key combinations
res = product(*res.values())
  
# printing result 
print("The computed combinations : " + str(list(res))) 
Producción

El diccionario original es: {‘Gfg’: [4, 5, 7], ‘is’: [1, 2, 9], ‘Best’: [9, 4, 2]}
Las combinaciones calculadas: [((‘Gfg’, 4), (‘is’, 1), (‘Best’, 9)), ((‘Gfg’, 4), (‘is’, 1), (‘ Mejor’, 4)), ((‘Gfg’, 4), (‘es’, 1), (‘Mejor’, 2)), ((‘Gfg’, 4), (‘es’, 2), (‘Mejor’, 9)), ((‘Gfg’, 4), (‘es’, 2), (‘Mejor’, 4)), ((‘Gfg’, 4), (‘es’, 2 ), (‘Mejor’, 2)), ((‘Gfg’, 4), (‘es’, 9), (‘Mejor’, 9)), ((‘Gfg’, 4), (‘es’ , 9), (‘Best’, 4)), ((‘Gfg’, 4), (‘is’, 9), (‘Best’, 2)), ((‘Gfg’, 5), (‘ es’, 1), (‘Mejor’, 9)), ((‘Gfg’, 5), (‘es’, 1), (‘Mejor’, 4)), ((‘Gfg’, 5), (‘es’, 1), (‘Mejor’, 2)), ((‘Gfg’, 5), (‘es’, 2), (‘Mejor’, 9)), ((‘Gfg’, 5 ), (‘es’, 2), (‘Mejor’, 4)), ((‘Gfg’, 5), (‘es’, 2), (‘Mejor’, 2)), ((‘Gfg’ , 5), (‘es’, 9), (‘Mejor’, 9)), ((‘Gfg’, 5), (‘es’, 9), (‘Mejor’, 4)), ((‘ Gfg’, 5), (‘is’, 9), (‘Best’, 2)), ((‘Gfg’, 7), (‘is’, 1), (‘Best’, 9)), ( (‘Gfg’, 7), (‘is’, 1), (‘Best’, 4)), ((‘Gfg’, 7), (‘is’, 1), (‘Best’, 2)) , ((‘Gfg’, 7), (‘es’, 2), (‘Mejor’,9)), ((‘Gfg’, 7), (‘is’, 2), (‘Best’, 4)), ((‘Gfg’, 7), (‘is’, 2), (‘Best ‘, 2)), ((‘Gfg’, 7), (‘is’, 9), (‘Best’, 9)), ((‘Gfg’, 7), (‘is’, 9), ( ‘Mejor’, 4)), ((‘Gfg’, 7), (‘es’, 9), (‘Mejor’, 2))]

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 *