class SetsDict: def __init__(self): self._data: dict[str, set] = dict() def add(self, key, value): if key not in self._data: self._data[key] = set() if value not in self._data[key]: self._data[key].add(value) def delete(self, key, value): if self._data.get(key, None): self._data[key].remove(value) @property def index(self): res = set() for key, collection in self._data.items(): for elem in collection: if elem not in res: res.add(elem) return res def by_key(self, key): return self._data.get(key, None) @property def keys(self): return self._data.keys()