I am trying to append elements from a multi-dimensional list into a 2nd multi-dimensional list. Here is the code I wrote –
JavaScript
x
24
24
1
my_list = [[['b', ['a'], 'c'], ['d', ['a', 'b'], 'e']],
2
[['j', ['a', 'f']], ['q', 't']]]
3
ref_list = [[['q', 'w', 't'], ['y', 'u']],
4
[['s', 'o'], ['p', 'k', 'l']]]
5
6
newlist = []
7
for num, i in enumerate(my_list):
8
small_list = []
9
for num_1, j in enumerate(i):
10
semilist = []
11
for k in j:
12
if isinstance(k, list):
13
onelist = []
14
for a in k:
15
for ii in ref_list[num][num_1]:
16
onelist.append(ii)
17
semilist.append(onelist)
18
else:
19
semilist.append(k)
20
small_list.append(semilist)
21
newlist.append(small_list)
22
23
print(newlist)
24
The output I am getting is –
JavaScript
1
2
1
[[['b', ['q', 'w', 't'], 'c'], ['d', ['y', 'u', 'y', 'u'], 'e']], [['j', ['s', 'o', 's', 'o']], ['q', 't']]]
2
The output I am looking for is of sort –
JavaScript
1
2
1
[[['b', ['q', 'w', 't'], 'c'], ['d', ['y', 'u'], 'e']], [['j', ['s', 'o']], ['p', 'k', 'l']]]
2
I want to replace elements of innermost list of “my_list” with the elements of the “ref_list”.
Advertisement
Answer
Try:
JavaScript
1
19
19
1
my_list = [
2
[["b", ["a"], "c"], ["d", ["a", "b"], "e"]],
3
[["j", ["a", "f"]], ["q", "t"]],
4
]
5
6
ref_list = [[["q", "w", "t"], ["y", "u"]], [["s", "o"], ["p", "k", "l"]]]
7
8
9
for a, b in zip(my_list, ref_list):
10
for i, subl in enumerate(a):
11
for ii, v in enumerate(subl):
12
if isinstance(v, list):
13
subl[ii] = b[i]
14
break
15
else:
16
a[i] = b[i]
17
18
print(my_list)
19
Prints:
JavaScript
1
5
1
[
2
[["b", ["q", "w", "t"], "c"], ["d", ["y", "u"], "e"]],
3
[["j", ["s", "o"]], ["p", "k", "l"]],
4
]
5
EDIT: To append elements from 2nd list instead replacing:
JavaScript
1
19
19
1
my_list = [
2
[["b", ["a"], "c"], ["d", ["a", "b"], "e"]],
3
[["j", ["a", "f"]], ["q", "t"]],
4
]
5
6
ref_list = [[["q", "w", "t"], ["y", "u"]], [["s", "o"], ["p", "k", "l"]]]
7
8
9
for a, b in zip(my_list, ref_list):
10
for i, subl in enumerate(a):
11
for ii, v in enumerate(subl):
12
if isinstance(v, list):
13
subl[ii].extend(b[i])
14
break
15
else:
16
a[i].extend(b[i])
17
18
print(my_list)
19
Prints:
JavaScript
1
5
1
[
2
[["b", ["a", "q", "w", "t"], "c"], ["d", ["a", "b", "y", "u"], "e"]],
3
[["j", ["a", "f", "s", "o"]], ["q", "t", "p", "k", "l"]],
4
]
5
EDIT2: To add elements of 2nd list at the beginning of first list:
JavaScript
1
19
19
1
my_list = [
2
[["b", ["a"], "c"], ["d", ["a", "b"], "e"]],
3
[["j", ["a", "f"]], ["q", "t"]],
4
]
5
6
ref_list = [[["q", "w", "t"], ["y", "u"]], [["s", "o"], ["p", "k", "l"]]]
7
8
9
for a, b in zip(my_list, ref_list):
10
for i, subl in enumerate(a):
11
for ii, v in enumerate(subl):
12
if isinstance(v, list):
13
subl[ii] = b[i] + subl[ii]
14
break
15
else:
16
a[i] = b[i] + a[i]
17
18
print(my_list)
19
Prints:
JavaScript
1
5
1
[
2
[["b", ["q", "w", "t", "a"], "c"], ["d", ["y", "u", "a", "b"], "e"]],
3
[["j", ["s", "o", "a", "f"]], ["p", "k", "l", "q", "t"]],
4
]
5