我有以下表格中的2个列表:
list1 = [["abc",45,48],["def",13,16]]
list2 = [["efgh",67,71],["def",13,16]]
如何找到这两个列表的联合?
必需的输出:
union_list = [["abc",45,48],["def",13,16],["efgh",67,71]]
如果这有帮助:如您所见,list[0][1]
和list[0][2]
为integers
,我们可以在必要时将其类型转换为string
。
答案 0 :(得分:2)
您可以使用set.union,即您可以将两个列表映射到元组列表,然后将它们转换为集合,以便您可以调用union
方法:
u_set = set(map(tuple, list1)).union(map(tuple, list2))
# {('abc', 45, 48), ('def', 13, 16), ('efgh', 67, 71)}
将它们转换回列表:
list(map(list, u_set))
# [['def', 13, 16], ['efgh', 67, 71], ['abc', 45, 48]]
答案 1 :(得分:1)
您可以使用集合理解。但由于列表不可清除,因此必须使用tuple()
。
>>> list1 = [["abc",45,48],["def",13,16]]
>>> list2 = [["efgh",67,71],["def",13,16]]
>>> {tuple(sublist) for sublist in list1 + list2}
set([('def', 13, 16), ('efgh', 67, 71), ('abc', 45, 48)])
>>>
答案 2 :(得分:1)
您可以使用
[list(x) for x in unique_everseen(tuple(y) for y in chain(list1, list2))]
unique_everseen()
可以在模块itertools的文档中找到。转换为元组是必要的,因为列表类型不可清除。