def parameter_product(parameter_options):
    """
    Function to compute the product between lists of parameters
    Args:
        parameter_options: a dictionary composed of possible parameters. Each parameter should have a list of
            the values said parameter can take

    Returns:
        A list of dictionaries. Each dictionary will contain a unique combination of the parameters.
    """

    result = []
    p_names = list(parameter_options)

    def product(p_names, options_dict, i=0):
        """backtracking."""

        if i == len(p_names):
            copy = dict(options_dict)
            result.append(copy)
            return

        for option in parameter_options[p_names[i]]:
            options_dict[p_names[i]] = option
            product(p_names, options_dict, i + 1)

    product(p_names, {})
    return result