从python中的列表中删除重复的元素

时间:2016-04-24 06:09:19

标签: python arrays python-2.7 multidimensional-array

我是编程的新手,我正在尝试从python中的列表中删除重复项。但是我无法使用set()执行它。列表包含IP地址和日期,以下是我的代码和列表

l = [['10.136.161.80', '2015-08-29'], ['10.136.161.80', '2015-08-29'], ['10.136.161.80', '2015-08-29'], ['10.136.161.80', '2015-08-29'], ['10.136.161.80', '2015-08-29'], ['10.136.161.80', '2015-08-29'],['10.136.161.235', '2016-03-12'], ['10.136.161.235', '2015-05-02'], ['10.136.161.93', '2016-03-12'], ['10.136.161.93', '2016-03-12'], ['10.136.161.93', '2015-04-25'], ['10.136.161.93', '2015-04-25'], ['10.136.161.93', '2016-03-12'], ['10.136.161.93', '2015-04-25'], ['10.136.161.93', '2015-04-25'], ['10.136.161.93', '2015-11-28'], ['10.136.161.93', '2015-11-28'], ['10.136.161.80', '2015-08-29'], ['10.136.161.112', '2015-04-25'], ['10.136.161.231', '2015-04-25']]

fl = set(l)
print fl

我收到以下错误:

Traceback (most recent call last):
  File "C:/Users/syeam02.TANT-A01/PycharmProjects/security/cleandata.py", line 18, in <module>
    fl = set(array)
TypeError: unhashable type: 'list'

提前致谢。

1 个答案:

答案 0 :(得分:3)

您无法在list中使用set类型元素,因为list是可变实体。出于同样的原因,您不能使用list作为字典的键。您需要具有不可变类型,例如tuple

因此,您可以在传递给set:

之前将内部元素转换为元组
set(tuple(li) for li in l)

检查this section to doc

  

尽管元组看起来与列表类似,但它们经常被用于   不同的情况和不同的目的。元组是不可变的,   并且通常包含异构的元素序列   通过解压缩(参见本节后面部分)或索引(或   即使是在namedtuples的情况下的属性)。列表是可变的,并且   它们的元素通常是同质的,可以通过迭代访问   在列表上。