在python中,如何检查列表列表是否有重复?

时间:2014-11-16 14:07:22

标签: python python-3.x

我搜索了我的问题的答案,发现许多人说尝试set(my_list),但在我的情况下(我在列表中有列表)python会抛出错误:

Traceback (most recent call last):
  File "E:/Users/Rene/PycharmProjects/vaip/Main.py", line 17, in <module>
  set(punktid)
TypeError: unhashable type: 'list'

所以我的问题是,如何在列表中找到并删除重复项:

my_list = [[0, 3], [3, 4], [5, 6], [9, 2], [0, 3]]

2 个答案:

答案 0 :(得分:3)

将所有子列表转换为元组可以创建set(所有元素都可以清除):

>>> {tuple(x) for x in my_list}
{(5, 6), (9, 2), (0, 3), (3, 4)}

在这种情况下,我们使用大括号来表示set comprehension,但也可以使用普通set constructor

>>> set(tuple(x) for x in my_list)
{(5, 6), (9, 2), (0, 3), (3, 4)}

如果您的最终结果必须是列表清单(订单可能不会保留):

>>> [list(y) for y in {tuple(x) for x in my_list}]
[[5, 6], [9, 2], [0, 3], [3, 4]]

答案 1 :(得分:0)

你可以使用,

>>> l
[[0, 3], [3, 4], [5, 6], [9, 2], [0, 3]]
>>> def remove_duplicate(l):
    tup = [tuple(x) for x in l]
    set_tup = set(tup)
    return [list(x) for x in list(set_tup) ]

>>> print remove_duplicate(l)
[[5, 6], [9, 2], [0, 3], [3, 4]]