Python消除了一行中具有不可用元素的列表重复项

Python eliminate duplicates of list with unhashable elements in one line

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Python: removing duplicates from a list of lists

说我有名单

1
a=[1,2,1,2,1,3]

如果a中的所有元素都是可哈希的(在这种情况下类似),则可以执行以下操作:

1
list(set(a))

但是,如果

1
a=[[1,2],[1,2],[1,3]]


Python 2

1
2
3
4
>>> from itertools import groupby
>>> a = [[1,2],[1,2],[1,3]]
>>> [k for k,v in groupby(sorted(a))]
[[1, 2], [1, 3]]

也可以在python 3中使用,但需要注意的是,所有元素都必须是可排序类型。


这个集合的理解可以使列表产生一组元组:

1
2
>>> {(tuple(e)) for e in a}
set([(1, 2), (1, 3)])

然后使用它再次将其转换为一个列表列表,没有重复项:

1
2
>>> [list(x) for x in {(tuple(e)) for e in a}]
[[1, 2], [1, 3]]