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

2024-03-29 12:58:35 发布

您现在位置:Python中文网/ 问答频道 /正文

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

所以我的问题是,如何在这样的列表中查找和删除重复项:

^{pr2}$

Tags: 答案most列表my错误calluserslist
2条回答

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

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

在本例中,我们使用大括号表示set comprehension,但也可以使用普通的set constructor

^{pr2}$

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

^{3}$

你可以用

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

相关问题 更多 >