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]] |