删除重复项并查找唯一的子列表

时间:2013-05-14 18:39:05

标签: python

我有一个嵌套列表,如下所示:

lst = [[1,2,3],[1,2],[1,2,3],[2,3],[4,5],[2,3],[2,4],[4,2]]

我想在lst中找到唯一的子列表。使用上面的例子,我想找到:

lst_set = [1,2,3],[1,2],[2,3],[4,5],[2,4]]

订单无关紧要。换句话说,[2,4][4,2]是相同的。

3 个答案:

答案 0 :(得分:2)

set(tuple(sorted(i)) for i in lst)

答案 1 :(得分:2)

In [22]: lst = [[1,2,3],[1,2],[1,2,3],[2,3],[4,5],[2,3],[2,4],[4,2]]

In [23]: set(frozenset(item) for item in lst)
Out[23]: 
set([frozenset([2, 4]),
     frozenset([1, 2]),
     frozenset([2, 3]),
     frozenset([1, 2, 3]),
     frozenset([4, 5])])

答案 2 :(得分:1)

查看内置的set()函数。由于列表不可用,您可能需要在使用set()之前将列表转换为元组。

这意味着:

set([tuple(sorted(x)) for x in lst])