def _match_operator(self, p, value):
        """
        Returns True or False if the operator (&, |, or ! with filters, or ^ with filters) matches the value dictionary
        """
        if p[0] == '!':
            return self._OPERATOR_MAP[p[0]](self._match(p[1], value))
        elif p[0] == '^':
            return self._OPERATOR_MAP[p[0]](self._match(p[1][0], value), self._match(p[1][1], value))
        else:
            return self._OPERATOR_MAP[p[0]]([self._match(operator_or_filter, value) for operator_or_filter in p[1]])