def get_param_value_and_result_list_call(exp_run, val_results_list, **kwargs):
    """
    Callable functions to be used when traversing experiments.
    Returns dictionary with data organised by environment and agent parameters and their available
    values in any of the experiments.

    :param exp_run: Dictionary with data from a set of experiments, separated by agent, data
        variable, and environment and agent parameters and values.
    :param val_results_list: Container that grows at each iteration when adding data corresponding
        to each environment and agent parameter value.
    :param kwargs: Dictionary with the current keys that will be populated in this call (one
        particular combination of agent, environment and agent parameter name, and environment and
        agent parameter value at a time).
    :return: Dictionary with organised data.
    """
    agent = kwargs.get('agent')
    env_key = kwargs.get('env_param')
    env_val = kwargs.get('env_val')
    agent_key = kwargs.get('agent_param')
    agent_value = kwargs.get('agent_val')
    for v in exp_run:
        val_results_list[agent][env_key][env_val][agent_key][v].append((agent_value, exp_run[v]))
    return val_results_list