Как проверить список списков на наличие дубликатов

Рейтинг: 0Ответов: 3Опубликовано: 30.01.2023

Есть List[List[int]]. Например check([[1 1], [3], [2 2]]) - вернет True, тк дубликатов нет;

check([[1 1], [3], [2 2], [3]]) - False, тк есть 3 Пытался через set что то реализовать но ругается что list unhashable. Какие есть варианты?

Внутри только список из одинаковых чисел

Ответы

▲ 1
def check(arr):
    arr = [(el[0], len(el)) for el in arr]
    return len(arr) == len(set(arr))
▲ 0
def has_duplicates(lists):
    for l in lists:
        if len(l) != len(set(l)):
            return True
    return False

lists = [[1, 2, 3], [4, 5, 6], [1, 2, 3]]
print(has_duplicates(lists)) # Output: True
▲ 0

Вот мой вариант:

from collections import Counter
from typing import List


def check_duplicates(lst: List[List[int]]) -> bool:
    cnt = Counter(list(map(tuple, lst)))
    for (k, v) in cnt.items():
        if v > 1:
            return False
    return True