我搜索了我的问题的答案,发现许多人说尝试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]]
答案 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]]