Комбинации цифр по словарю
Имеется словарь
d = {'1': [4], '4': [1, 5, 6], '5': [1, 2, 5, 6]}
Как вывести все комбинации для 1,4,5 (их может быть больше и цифры могут быть другие)?
Например
print(4,1,1) и далее
4,5,1
4,6,1
4,1,2,
4,5,2
4,6,2
4,1,5,
4,5,5
4,6,5
4,1,6,
4,5,6
4,6,6
Ответы (1 шт):
Автор решения: Алексей Белкин
→ Ссылка
В ссылке, которой в комментарии указал там при помощи zip решилась проблема.
В Вашем случае я понял, что на вход надо подавать ключи словаря и выдавать комбинации значений словаря:
from numpy import prod
d = {'1': [4], '4': [1, 5, 6], '5': [1, 2, 5, 6]}
key1, key2, key3 = input().split()
the_list = [d[key1], d[key2], d[key3]]
prod_lengths = prod(list(map(len, the_list)))
result = list(zip(*(x*(prod_lengths//len(x)) for x in the_list)))
for i in result:
print(i)
Если задать:
1 5 4
Напечатает:
(4, 1, 1)
(4, 2, 5)
(4, 5, 6)
(4, 6, 1)
(4, 1, 5)
(4, 2, 6)
(4, 5, 1)
(4, 6, 5)
(4, 1, 6)
(4, 2, 1)
(4, 5, 5)
(4, 6, 6)