Produto cartesiano de um dicionário de listas

Estou tentando escrever um código para testar o produto cartesiano de vários parâmetros de entrada.

Eu olheiitertools, mas éproduct função não é exatamente o que eu quero. Existe uma maneira óbvia e simples de usar um dicionário com um número arbitrário de chavese um número arbitrário de elementos em cada valor e, em seguida, produz um dicionário com a próxima permutação?

Entrada:

options = {"number": [1,2,3], "color": ["orange","blue"] }
print list( my_product(options) )

Exemplo de saída:

[ {"number": 1, "color": "orange"},
  {"number": 1, "color": "blue"},
  {"number": 2, "color": "orange"},
  {"number": 2, "color": "blue"},
  {"number": 3, "color": "orange"},
  {"number": 3, "color": "blue"}
]

questionAnswers(4)

yourAnswerToTheQuestion