У меня есть вложенный список (список списка), и я хочу удалить дубликаты, но я получаю сообщение об ошибке. Это пример:Получите уникальные значения из вложенного списка в python
images = [
[
{
"image_link": "1969.1523.001.aa.cs.jpg",
"catalogue_number": "1969.1523",
"dataset_name": "marine-transportation-transports-maritimes.xml"
},
{
"image_link": "1969.1523.001.aa.cs.jpg",
"catalogue_number": "1969.1523",
"dataset_name": "railway-transportation-transports-ferroviaires.xml"
}
],
[
{
"image_link": "1969.1523.001.aa.cs.jpg",
"catalogue_number": "1969.1523",
"dataset_name": "marine-transportation-transports-maritimes.xml"
},
{
"image_link": "1969.1523.001.aa.cs.jpg",
"catalogue_number": "1969.1523",
"dataset_name": "railway-transportation-transports-ferroviaires.xml"
}
],
[
{
"image_link": "1969.1523.001.aa.cs.jpg",
"catalogue_number": "1969.1523",
"dataset_name": "marine-transportation-transports-maritimes.xml"
},
{
"image_link": "1969.1523.001.aa.cs.jpg",
"catalogue_number": "1969.1523",
"dataset_name": "railway-transportation-transports-ferroviaires.xml"
}
]
]
Таким образом, в финале это images
будет содержит только
[
[
{
"image_link": "1969.1523.001.aa.cs.jpg",
"catalogue_number": "1969.1523",
"dataset_name": "marine-transportation-transports-maritimes.xml"
},
{
"image_link": "1969.1523.001.aa.cs.jpg",
"catalogue_number": "1969.1523",
"dataset_name": "railway-transportation-transports-ferroviaires.xml"
}
]
]
Я использую set
функцию
set.__doc__
'set() -> new empty set object\nset(iterable) -> new set object\n\nBuild an unor
dered collection of unique elements.'
мой журнал трассировки:
list(set(images))
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: unhashable type: 'list'
Для того, чтобы сделать его проще, как я могу удалить все дубликаты в этом примере
example = [ [{'a':1, 'b':2}, 'w', 2], [{'a':1, 'b':2}, 'w', 2] ]
#result
#example = [[{'a':1, 'b':2}, 'w', 2] ]
unhashable типа: «список» Это означает, что он не может иметь хеш-список, потому что список изменен, вы не можете хешировать изменяемый объект, если ваши данные статичны, вы можете изменить список для кортежей. – danielfranca
Проблема с dicts заключается в том, что даже если вы вставляете их в кортежи (неизменяемые), у вас нет никаких средств для определения порядка элементов, что нарушит сравнение. Хорошее решение предполагает перевод этой структуры данных в неизменяемую структуру хешируемых данных, а затем очистку дубликатов (например, с помощью 'set'). – Lachezar