Producto cartesiano de un diccionario de listas

Estoy tratando de escribir un código para probar el producto cartesiano de un grupo de parámetros de entrada.

He mirado aitertools, pero esproducta función @ no es exactamente lo que quiero. ¿Hay una manera simple y obvia de tomar un diccionario con un número arbitrario de claves un número arbitrario de elementos en cada valor, y luego generar un diccionario con la próxima permutación?

Entrada

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

Salida de ejemplo:

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

Respuestas a la pregunta(4)

Su respuesta a la pregunta