Найти повторяющиеся списки в списке
У меня есть массив
mylist = [[1,'a'], [2, 'b'], [[1, 'a'], [3, 'c'], [2, 'b']]
Из него я хочу получить
newlist = [[1, 'a'], [2, 'b']]
То есть найти все повторяющиеся списки и закинуть их в массив, пробовал делать так
from collections import Counter
mylist = [[1,'a'], [2, 'b'], [[1, 'a'], [3, 'c'], [2, 'b']]
[k for k,v in Counter(mylist).items() if v>1]
Но получаю ошибку
unhashable type 'list'
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Можно сделать вашим способом, если преобразовать list в tuple, которое уже hashable, а после его обработки через Counter - обратно в list:
from collections import Counter
mylist = [[1,'a'], [2, 'b'], [1, 'a'], [3, 'c'], [2, 'b']]
[list(k) for k,v in Counter(map(tuple, mylist)).items() if v>1]
На выходе:
[[1, 'a'], [2, 'b']]
Заметьте, что у вас лишняя [ в середине списка, из-за которой ваша ошибка не воспроизводится, а получается другая ошибка. Ну, либо у вас не хватает завершающей ] и тогда это немного другая задача - надо сначала ещё вложенные списки развернуть.