'factor is ignored if value is found in the dictionary'

def __call__(self, direction, factor, values):

    if self._fallback_formatter:
        fallback_strings = self._fallback_formatter(direction, factor, values)
    else:
        fallback_strings = ([u''] * len(values))
    r = [self._format_dict.get(k, v) for (k, v) in zip(values, fallback_strings)]
    return r
