我正在尝试将多维列表中的元素附加到第二个多维列表中。这是我写的代码-
my_list = [
[["b", ["a"], "c"], ["d", ["a", "b"], "e"]],
[["j", ["a", "f"]], ["q"]]
]
ref_list = [[["q", "w", "t"], ["y", "u"]], [["s"], ["p", "k", "l"]]]
for a, b in zip(my_list, ref_list):
for i, subl in enumerate(a):
for ii, v in enumerate(subl):
if isinstance(v, list):
subl[ii] = b[i] + subl[ii]
break
print(my_list)
我得到的输出是 -
[
[["b", ["q", "w", "t", "a"], "c"], ["d", ["y", "u", "a", "b"], "e"]],
[["j", ["s", "a", "f"]], ["p", "k", "l", "q"]]
]
它将第二个列表的元素添加到第一个列表的开头。我试图得到的输出是排序 -
[
[["b", ["q", "a", "w", "a", "t", "a"], "c"], ["d", ["y", "a", "b", "u", "a", "b"], "e"]],
[["j", ["s", "a", "f"]], ["p", "q", "k", "q", "l", "q"]]
]
我想在 my_list
的每个元素之后添加 ref_list
的inner_most 元素,而不是最后只添加一次。
答案 0 :(得分:2)
对您的代码稍作改动:
for a, b in zip(my_list, ref_list):
for i, subl in enumerate(a):
for ii, v in enumerate(subl):
if isinstance(v, list):
result = list()
for element in b[i]:
result += [element]+subl[ii]
subl[ii] = result
break
else:
result = list()
for element in b[i]:
result += [element]+a[i]
a[i] = result
>>> my_list
[[['b', ['q', 'a', 'w', 'a', 't', 'a'], 'c'],
['d', ['y', 'a', 'b', 'u', 'a', 'b'], 'e']],
[['j', ['s', 'a', 'f']], ['p', 'q', 'k', 'q', 'l', 'q']]]
答案 1 :(得分:2)
my_list = [
[["b", ["a"], "c"], ["d", ["a", "b"], "e"]],
[["j", ["a", "f"]], ["q"]]
]
ref_list = [[["q", "w", "t"], ["y", "u"]], [["s"], ["p", "k", "l"]]]
for a, b in zip(my_list, ref_list):
for i, subl in enumerate(a):
for ii, v in enumerate(subl):
if isinstance(v, list):
new_subl=subl[ii]
subl[ii]=[]
for j in b[i]:
subl[ii] +=[j] + new_subl
break