def eval_dict(self, r: dict) -> Iterator[Tuple[(str, str, str)]]:
    for (tag, f) in self.tagmap.items():
        for (k, v) in r.items():
            if f(v):
                (yield (tag, k, v))
def eval_dict(self, r: dict) -> Iterator[Tuple[(str, str, str)]]:
    for (tag, f) in self.tagmap.items():
        for (k, v) in r.items():
            if f(v):
                (yield (tag, k, v))