Python: Как удалить дубликаты списков в списке списков?
Я хочу удалить все дубликаты списка из списка списка.
У меня есть список таких списков.
a = [[1,2],[1,2],[3,4,5],[3,4,5],[3,4,5]]
Я хочу иметь:
b = [[1,2],[3,4,5]]
Я не знаю как это сделать.
Спасибо
2 ответа
Решение
Вы можете использовать набор:
b_set = set(map(tuple,a)) #need to convert the inner lists to tuples so they are hashable
b = map(list,b_set) #Now convert tuples back into lists (maybe unnecessary?)
Или, если вы предпочитаете списки / генераторы списка:
b_set = set(tuple(x) for x in a)
b = [ list(x) for x in b_set ]
Наконец, если порядок важен, вы всегда можете отсортировать b:
b.sort(key = lambda x: a.index(x) )
См. Ответ мгильсона, если порядок списков не важен. Если вы хотите сохранить заказ, сделайте что-то вроде:
b = list()
for sublist in a:
if sublist not in b:
b.append(sublist)
Это сохранит порядок в исходном списке. Однако это медленнее и более многословно, чем использование множеств.