Generar todas las posibles combinaciones de valores de listas de tamaños diferentes.
Tengo un dict de Python con listas de diferente longitud como valores de clave.
{
'basis1': ['key11', 'key12', 'key13', 'key14'],
'basis2': ['key21'],
'basis3': ['key31', 'key32', 'key33'],
'basis4': ['key41', 'key42'],
...'basisX': ['keyX1', ..., 'keyXX']
}
¿Cómo puedo obtener todas las combinaciones posibles de todos los valores de clave del dict (un valor de cada clave a otro valor de otra clave)? Me refiero no solo a los valores “basis1 + basis2 + … basisX”, sino también, por ejemplo, valores “basis2 + basis1 + basis3” y valores “basis3 + basisX”.
Solía iterar con una función “product” de “itertools” para generar palabras clave por fórmulas predeterminadas. Pero hay una limitación debido a las fórmulas y la cantidad de listas que hay en estas fórmulas. Pero necesito que no dependa de la cantidad de listas que se alimentarán a la entrada de la función, así como mezclar en un orden diferente los valores de las listas.
from itertools import product
...
...
...
<h1>Cada [keysX] es una lista de valores</h1>
<pre><code>fórmula1 = [keys0] + [keys1]
fórmula2 = [keys0] + [keys2]
fórmula3 = [keys1] + [keys2]
fórmula4 = [keys0] + [keys1] + [keys2]
todas_las_palabras_clave = []
for combo in product(*fórmula1):
todas_las_palabras_clave.append(" ".join(combo))
for combo in product(*fórmula2):
todas_las_palabras_clave.append(" ".join(combo))
for combo in product(*fórmula3):
todas_las_palabras_clave.append(" ".join(combo))
for combo in product(*fórmula4):
todas_las_palabras_clave.append(" ".join(combo))
</code></pre>
davy.ai
Para obtener todas las posibles combinaciones de los valores de clave de un diccionario, se puede utilizar la función
product
del móduloitertools
. Primero, es necesario crear una lista de listas que contenga todos los valores de clave del diccionario. Una vez que tenga esta lista, puede pasarla a la funciónproduct
para generar todas las posibles combinaciones.Aquí hay un ejemplo de código:
Esto mostrará todas las posibles combinaciones de los valores de clave, incluyendo aquellas en las que las claves están mezcladas en un orden diferente.