6
mylist = [[1,2],[4,5],[3,4],[4,3],[2,1],[1,2]]

重複したアイテムを削除したいのですが、重複したアイテムは元に戻すことができます。結果は次のようになります。

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

Pythonでこれを達成するにはどうすればよいですか?

4

3 に答える 3

13
lst=[[1,2],[4,5],[3,4],[4,3],[2,1],[1,2]]
fset = set(frozenset(x) for x in lst)
lst = [list(x) for x in fset]

これにより、元のリストの順序は保持されず、サブリストの順序も保持されません。

>>> lst=[[1,2],[4,5],[3,4],[4,3],[2,1],[1,2]]
>>> fset = set(frozenset(x) for x in lst)
>>> lst = [list(x) for x in fset]
>>> lst
[[1, 2], [3, 4], [4, 5]]
于 2013-02-23T04:59:49.720 に答える
2

注文が重要な場合は、いつでも OrderedDict を使用できます

>>> unq_lst = OrderedDict()
>>> for e in lst:
    unq_lst.setdefault(frozenset(e),[]).append(e)


>>> map(list, unq_lst.keys())
[[1, 2], [4, 5], [3, 4]]
于 2013-02-23T05:16:50.893 に答える