我有一个列表,如list<list<list>>
列表,要删除重复的列表。
list_1 = [
[
[1,2],[2,3]
],
[
[3,4],[5,6]
],
[
[3,4], [5,6]
]
]
因此预期输出应为
output = [
[
[1,2],[2,3]
],
[
[3,4],[5,6]
]
]
是否有捷径可做,而不是将每个列表相互比较。我们无法设置(list_1),那么删除重复项最容易的是什么?
P.S:这是3级嵌套,因此标记为重复问题的答案无效。
答案 0 :(得分:1)
您可以尝试
k = [
[
[1,2],[2,3]
],
[
[3,4],[5,6]
],
[
[3,4], [5,6]
]
]
import itertools
k.sort()
list(k for k,_ in itertools.groupby(k))
[[[1, 2], [2, 3]], [[3, 4], [5, 6]]]
有关详细信息,您可以在这里https://stackoverflow.com/a/2213973/4320263
答案 1 :(得分:0)
我看到它的一种方法是,将列表展平到较低的水平,然后通过迭代列表列表并添加到“ seen
”集中列表,使其变得懒惰,同时保留顺序:
lst = [ [[1,2],[2,3]], [[3,4],[5,6]], [[3,4], [5,6]] ]
from toolz import unique
flat_list = [item for sublist in lst for item in sublist]
res = map(list, unique(map(tuple, flat_list)))
print(list(res))
输出:
[[1, 2], [2, 3], [3, 4], [5, 6]]
编辑:
如果您想返回嵌套列表,请每2个元素配对:
print([res[i:i+2] for i in range(0, len(res), 2)])
输出:
[[[1, 2], [2, 3], [3, 4]], [[5, 6]]]