Я пытаюсь получить всю комбинацию из двух словарей ниже, изменяя только первые два элемента значений, которые хранятся в качестве ключа. Также для информации каждое значение является предпочтением для этого ключа. Таким образом, в dic a каждый ключ имеет три предпочтения, а также в dic b каждый ключ имеет четыре предпочтения. Я просто пытаюсь получить все комбинации, меняя или меняя первые два параметра для ключей в обоих словарях.
a={"ad":["tau","guru","addha"],
"bigd":["tau","guru","addha"],
"lugd":["tau","guru","addha"],
"df":["addha","tau","guru"]}
b={"tau":["ad","bigd","lugd",'df'],
"guru":["bigd","ad",'df',"lugd"],
"addha":["lugd",'df',"bigd","ad"]}
Таким образом, одна комбинация будет при изменении первых двух элементов в ["ad"], а остальные будут одинаковыми.
a={"ad":["guru","tau","addha"],
"bigd":["tau","guru","addha"],
"lugd":["tau","guru","addha"],
"df":["addha","tau","guru"]}
b={"tau":["ad","bigd","lugd",'df'],
"guru":["bigd","ad",'df',"lugd"],
"addha":["lugd",'df',"bigd","ad"]}
Таким образом, получение всей комбинации только изменяя или меняя первые два предпочтения клавиш.
Мой код ниже -:
a={"ad":["tau","guru","addha"],
"bigd":["tau","guru","addha"],
"lugd":["tau","guru","addha"],
"df":["addha","tau","guru"]}
b={"tau":["ad","bigd","lugd",'df'],
"guru":["bigd","ad",'df',"lugd"],
"addha":["lugd",'df',"bigd","ad"]}
from itertools import permutations, product
def permute_first2(a):
b=[]
permutes=list(list(p) for p in permutations(a[:2]))
for i in permutes:
b.append(i+a[2:])
return b
length_a=len(a.keys())
length_b=len(b.keys())
items_a=list(a.keys())
items_b=list(b.keys())
a_variants = [dict(zip(items_a, values))
for values in product(permute_first2(items_b), repeat=3)]
b_variants = [dict(zip(items_b, values))
for values in product(permute_first2(items_a), repeat=3)]
all_variants = product(a_variants, b_variants)
for va, vb in all_variants:
print("a:", va, "\nb:", vb, "\n")