def recursive_get(data, keys, _top=True):
    """ Recursively slice a nested dictionary by a
    list of keys.

    Parameters:
        data (dict): nested dictionary to get from.
        keys (list): list of keys/indices to delve into.

    Raises:
        KeyError: if any in chain keys are missing,
        IndexError: if any element of a sublist is
            missing.

    """
    if not isinstance(keys, (list, tuple)):
        return data[keys]

    if isinstance(keys, (list, tuple)) and len(keys) == 1:
        return data[keys[0]]
    try:
        return recursive_get(data[keys[0]], keys[1:], _top=False)
    except (KeyError, IndexError) as exc:
        if _top:
            raise type(exc)('Recursive keys {} missing'.format(keys))
        raise exc