Комбинации цифр по словарю

Имеется словарь

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)
→ Ссылка