Reputation: 231
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
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