def test__delitem__():
    named_sndict_a = StructuredNestedDict(
        dict_a, levels=3, level_names=["a", "b", "c"])
    del named_sndict_a["key2"]
    assert list_equal(
        named_sndict_a.flatten_values(),
        ['val1_1_1', 'val1_1_2'],
    )
    assert named_sndict_a.dim == (2, 1, 2)
def test_ix():
    sndict_a = StructuredNestedDict(dict_a, levels=3)
    assert sndict_a.ix['key1', 'key1_1', 'key1_1_1'] == "val1_1_1"
    try:
        _ = sndict_a.ix['keyX', 'keyX_1', 'keyX_1_1']
        raise RuntimeError
    except KeyError:
        pass

        sndict_a.ix['keyX', 'keyX_1', 'keyX_1_1'] = "valX_1_1"
    assert sndict_a.ix['keyX', 'keyX_1', 'keyX_1_1'] == "valX_1_1"

    sndict_c = StructuredNestedDict(dict_c, levels=3)
    sndict_c.ix[:, "keyX_1", :] = "NEW"
    assert list_equal(
        sndict_c.flatten_values(),
        ['NEW', 'NEW', 'NEW', 'NEW',
         'val2_2_1', 'val2_2_2', 'val2_2_3', 'val2_2_4', 'val2_2_5'],
    )