SG9
SG9

Reputation: 231

Inserting an element in a specific location in a multi-dimensional list

I am trying to insert an element at a particular instance in the multi-dimensional list:

eg_list = [[['DF1 IN Element', ['DF_CAT1_APPLE_SELECT', 'Element_TO()', '1']], ['DOG Element', ['DF1_CAT_en', 1.0, 'DF_CAT1_DOG', 'Element_TO()', '1']], ['BANANA Element', ['DF_CAT1_BANANA', 'Element_TO()', '1']]], [['DF2 IN Element', ['DF_CAT2_APPLE_SELECT', 'Element_TO()', '1']], ['DOG Element', ['DF_CAT2_DOG', 'Element_TO()', '1']], ['BANANA Element', ['DF_CAT2_BANANA', 'Element_TO()', '1']]], [['MB1 IN ENABLE', ['MB_CAT1_APPLE_SELECT', 'Element_TO()', '1']], ['DOG Element', ['MB_CAT1_DOG', 'Element_TO()', '1']], ['BANANA Element', ['MB_CAT1_BANANA', 'Element_TO()', '1']]], [['MB2 IN ENABLE', ['MB_CAT2_APPLE_SELECT', 'Element_TO()', '1']], ['DOG Element', ['MB_CAT2_DOG', 'Element_TO()', '1']], ['BANANA Element', ['MB_CAT2_BANANA', 'Element_TO()', '1']]], [['ABC1 IN ENABLE', ['ABC_CAT1_APPLE_SELECT', 'Element_TO()', '1']], ['DOG Element', ['ABC_CAT1_DOG', 'Element_TO()', '1']], ['BANANA Element', ['ABC_CAT1_BANANA', 'Element_TO()', '1']]]]

for i in range(0, len(eg_list)):
    for j in range(0, len(eg_list[i])):
        for k in range(0, len(eg_list[i][j][1])):
            if eg_list[i][j][1][k] == 'Element_TO()':
                eg_list.insert([i][j][1][k], 'MAIN')

Basically, what I am trying to do is if it finds, 'Element_TO()' in the list then I am trying to insert 'MAIN' after that element. The output I am looking for is -

[[['DF1 IN Element', ['DF_CAT1_APPLE_SELECT', 'Element_TO()', 'MAIN', '1']], ['DOG Element', ['DF1_CAT_en', 1.0, 'DF_CAT1_DOG', 'Element_TO()', 'MAIN', '1']], ['BANANA Element', ['DF_CAT1_BANANA', 'Element_TO()', 'MAIN', '1']]], [['DF2 IN Element', ['DF_CAT2_APPLE_SELECT', 'Element_TO()', 'MAIN', '1']], ['DOG Element', ['DF_CAT2_DOG', 'Element_TO()', 'MAIN', '1']], ['BANANA Element', ['DF_CAT2_BANANA', 'Element_TO()', 'MAIN', '1']]], [['MB1 IN ENABLE', ['MB_CAT1_APPLE_SELECT', 'Element_TO()', 'MAIN', '1']], ['DOG Element', ['MB_CAT1_DOG', 'Element_TO()', 'MAIN', '1']], ['BANANA Element', ['MB_CAT1_BANANA', 'Element_TO()', 'MAIN', '1']]], [['MB2 IN ENABLE', ['MB_CAT2_APPLE_SELECT', 'Element_TO()', 'MAIN', '1']], ['DOG Element', ['MB_CAT2_DOG', 'Element_TO()', 'MAIN', '1']], ['BANANA Element', ['MB_CAT2_BANANA', 'Element_TO()', 'MAIN', '1']]], [['ABC1 IN ENABLE', ['ABC_CAT1_APPLE_SELECT', 'Element_TO()', 'MAIN', '1']], ['DOG Element', ['ABC_CAT1_DOG', 'Element_TO()', 'MAIN', '1']], ['BANANA Element', ['ABC_CAT1_BANANA', 'Element_TO()', 'MAIN', '1']]]]

How can I get this?

EDIT - Posted another question with the contents of this question for a little more generalized solution. Link to that question - link to the question

Upvotes: 0

Views: 132

Answers (1)

Andrej Kesely
Andrej Kesely

Reputation: 195438

I'd use recursion for the task:

def add(l):
    if isinstance(l, list):
        if "Element_TO()" in l:
            l.insert(l.index("Element_TO()") + 1, "MAIN")
        for v in l:
            add(v)


add(eg_list)
print(eg_list)

Prints:

[
    [
        [
            "DF1 IN Element",
            ["DF_CAT1_APPLE_SELECT", "Element_TO()", "MAIN", "1"],
        ],
        [
            "DOG Element",
            ["DF1_CAT_en", 1.0, "DF_CAT1_DOG", "Element_TO()", "MAIN", "1"],
        ],
        ["BANANA Element", ["DF_CAT1_BANANA", "Element_TO()", "MAIN", "1"]],
    ],
    [
        [
            "DF2 IN Element",
            ["DF_CAT2_APPLE_SELECT", "Element_TO()", "MAIN", "1"],
        ],
        ["DOG Element", ["DF_CAT2_DOG", "Element_TO()", "MAIN", "1"]],
        ["BANANA Element", ["DF_CAT2_BANANA", "Element_TO()", "MAIN", "1"]],
    ],
    [
        [
            "MB1 IN ENABLE",
            ["MB_CAT1_APPLE_SELECT", "Element_TO()", "MAIN", "1"],
        ],
        ["DOG Element", ["MB_CAT1_DOG", "Element_TO()", "MAIN", "1"]],
        ["BANANA Element", ["MB_CAT1_BANANA", "Element_TO()", "MAIN", "1"]],
    ],
    [
        [
            "MB2 IN ENABLE",
            ["MB_CAT2_APPLE_SELECT", "Element_TO()", "MAIN", "1"],
        ],
        ["DOG Element", ["MB_CAT2_DOG", "Element_TO()", "MAIN", "1"]],
        ["BANANA Element", ["MB_CAT2_BANANA", "Element_TO()", "MAIN", "1"]],
    ],
    [
        [
            "ABC1 IN ENABLE",
            ["ABC_CAT1_APPLE_SELECT", "Element_TO()", "MAIN", "1"],
        ],
        ["DOG Element", ["ABC_CAT1_DOG", "Element_TO()", "MAIN", "1"]],
        ["BANANA Element", ["ABC_CAT1_BANANA", "Element_TO()", "MAIN", "1"]],
    ],
]

Upvotes: 1

Related Questions