This function generates dictionary
    from values parameter.
    For example this:
    example = {
        'streetway': ('street', {'language': 'en'}),
        'first_name': ('first', {'language': 'en'})
    }
    chance.dictionary(example)
    will output something like this:
    {'streetway': 'Jabhuru Point', 'first_name': 'Eunice'}

    :param values: dict
    :return: dict

def dictionary(values):
    """
    This function generates dictionary
    from values parameter.
    For example this:
    example = {
        'streetway': ('street', {'language': 'en'}),
        'first_name': ('first', {'language': 'en'})
    }
    chance.dictionary(example)
    will output something like this:
    {'streetway': 'Jabhuru Point', 'first_name': 'Eunice'}

    :param values: dict
    :return: dict
    """
    result = dict()
    for key in values:
        fname = values[key][0]
        if fname not in functions_map:
            result[key] = values[key]
        else:
            params = values[key][1] if len(values[key]) == 2 else {}
            result[key] = functions_map[fname](**params)
    return result