2016-04-24 3 views
0

Я новичок в программировании, и я пытаюсь удалить дубликаты из списка в python. Однако я не могу выполнить его с помощью set(). Список содержит IP-адрес и дата Ниже мой код и списокудалить дубликаты элементов из списка в python

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' 

Спасибо заранее.

ответ

3

Вы не можете использовать элементы типа list в set, так как list является изменяемым объектом. По той же причине вы не можете использовать list в качестве ключа словаря. Вы должны иметь неизменный тип, например tuple.

Таким образом, вы можете преобразовать внутренние элементы кортежа перед переходом, чтобы установить:

set(tuple(li) for li in l) 

Проверить this section to doc:

Though tuples may seem similar to lists, they are often used in different situations and for different purposes. Tuples are immutable, and usually contain a heterogeneous sequence of elements that are accessed via unpacking (see later in this section) or indexing (or even by attribute in the case of namedtuples). Lists are mutable, and their elements are usually homogeneous and are accessed by iterating over the list.

+0

Благодаря Рохит это решить мою проблему. сейчас мои данные выглядят следующим образом: у нас разные даты, и ip - это то же самое, что можно сохранить только одну дату и IP 2015-08-29 10.136.161.80 2015-04-25 10.136.161.93 2015-04-25 10.136.161.231 2015-11-28 10.136.161.93 2016-04-02 10.136.161.231 2015-08-08 10.136.161.231 2015-11-28 10.136.161.235 2016-03-12 10.136.161.235 2015 -04-25 10.136.161.112 2015-05-02 10.136.161.235 2016-03-12 10.136.161.93 2015-11-28 10.136.161.231 2016-03-12 10.136.161.231 –

Смежные вопросы