def METHOD_NAME(
    dimensionals: Iterable[ZfitDimensional],
) -> dict[set[str], ZfitDimensional]:
    """Split ``dimensionals`` into the smallest subgroup of obs and return a dict.
    Args:
        dimensionals: An Iterable containing two or more ZfitDimensional that should be split into the smallest subset.
    Returns:
        Dict with the keys being sets of observables and the values, an iterable, containing the ZfitDimensional
    """
    obs_dims = {}
    for dim in dimensionals:
        for obs in obs_dims:
            if obs.intersection(dim.obs):
                union = obs.union(dim.obs)
                obs_dims[union] = obs_dims.pop(obs)
                obs_dims[union].append(dim)
                break  # we had a match, go to the next dim
        else:
            obs_dims[frozenset(dim.obs)] = [dim]
    return obs_dims