':param str_list: A list with all the strings that we want
to match against one or more strings using the "query" function.
This list might be [str_1, str_2 ... , str_N] or something like
[ (str_1, obj1) , (str_2, obj2) ... , (str_N, objN)]. In the first
case, if a match is found this class will return [ str_N, ]
in the second case we\'ll return [ [str_N, objN], ]'

def __init__(self, str_list):

    self._in = []
    self._assoc_obj = {}
    for item in str_list:
        if isinstance(item, tuple):
            in_str = item[0]
            in_str = in_str.encode(DEFAULT_ENCODING)
            self._in.append(in_str)
            self._assoc_obj[in_str] = item[1:]
        elif isinstance(item, basestring):
            item = item.encode(DEFAULT_ENCODING)
            self._in.append(item)
        else:
            raise ValueError('Can    NOT    build    in_multi_in    with    provided    values.')
