提问人:Hesta 提问时间:7/26/2023 最后编辑:Hesta 更新时间:7/29/2023 访问量:61
如何合并 2 个嵌套列表
How to merge 2 nested lists
问:
我想合并 2 个列表:
list1 = ['a', ['b', ['c', ['lol', [{'s': '21'}]]]]]
list2 = ['a', ['f', ['d', [{'x': '22'}]]]]]
预期结果:
['a', ['b', ['c', ['lol', [{'s': '21'}]]]], ['f', ['d', [{'x': '22'}]]]]
我试着按键获取,但我没有得到我所期望的。
答:
0赞
Nadir Belhaj
7/26/2023
#1
您需要创建一个函数,以递归方式运行列表并将其元素合并在一起
def merge(list1, list2):
if not list1:
return list2
if not list2:
return list1
merged_list = []
if isinstance(list1[0], list) and isinstance(list2[0], list):
merged_list.append(merge(list1[0], list2[0]))
else:
merged_list.append(list1[0])
merged_list.extend(merge(list1[1:], list2[1:]))
return merged_list
list1 = ['a', ['b', ['c', ['lol', [{'s': '21'}]]]]]
list2 = ['a', ['f', ['d', [{'x': '22'}]]]]
merged = merge(list1, list2)
print(merged)
评论
0赞
Hesta
7/26/2023
此函数的结果是 ['a', ['b', ['c', ['lol', [{'s': '21'}]]]]] 它丢失了 ['f', ['d', [{'x': '22'}]]]
0赞
Ariel Carvalho
7/26/2023
#2
上面的答案无法处理将列表元素扩展到第二个列表。
def merge_lists(list1, list2):
if not list1:
return list2
if not list2:
return list1
merged_list = []
if isinstance(list1[0], list) and isinstance(list2[0], list):
merged_list.extend([merge_lists(list1[0], list2[0])])
else:
merged_list.extend([list1[0]])
merged_list.extend(merge_lists(list1[1:], list2))
return merged_list
希望对你有所帮助!:D
0赞
Alain T.
7/29/2023
#3
我不清楚您打算如何识别嵌套级别的重复项,但在第一级,您可以使用列表推导式来过滤第二个列表中的项目,不包括第一个列表中的项目:
list1 = ['a', ['b', ['c', ['lol', [{'s': '21'}]]]]]
list2 = ['a', ['f', ['d', [{'x': '22'}]]]]
list3 = list1 + [i for i in list2 if i not in list1 ]
print(list3)
['a', ['b', ['c', ['lol', [{'s': '21'}]]]], ['f', ['d', [{'x': '22'}]]]]
评论