code: def _apply_to_sets(self, func, operation, keys, *args):
          
          keys = self._list_or_args(keys, args)
          if not keys:
              raise TypeError("{} takes at least two arguments".format(operation.lower()))
          left = self._get_set(keys[0], operation) or set()
          for key in keys[1:]:
              right = self._get_set(key, operation) or set()
              left = func(left, right)
          return left
docs: Helper function for sdiff, sinter, and sunion