import yaml with open('/data/namespaces.yaml') as f: namespaces = yaml.load(f, Loader=yaml.CLoader) def to_set(input): if isinstance(input, str): return set([input]) elif isinstance(input, list): return set(input) else: raise ValueError("input must be string or list") def get_ns_by_tags(tags): s = set() for ns, t in namespaces.items(): for name, value in tags.items(): if name not in t: break if len(to_set(t[name]).intersection(to_set(value))) == 0: break else: s.add(ns) return list(s)