Функция issubset для проверки того, является ли кортеж подмножеством набора кортежей - PullRequest
0 голосов
/ 07 июня 2019

У меня есть кортеж размера 3 и другой список кортежей размера два.В Python я хочу проверить, присутствуют ли все подмножества кортежа 3-го размера в списке кортежей или нет

Eg:
T3 -> Tuple of size 3: {A, B, C}
Inp -> List of Tuples of Size 2 given as input: [(A,B), (A,C), (B,C), 
       (C,D)]

I want to first get all possible subsets of T3 i.e. (A,B), (A,C), (B,C)
and if all of them are part of Inp then return T3, otherwise do nothing.

До сих пор мне удавалось генерировать возможные подмножества размера = 2, используя Python itertools.combinations()

но я не смог проверить 2-ю часть.

Я использовал функцию issubset (), но она не возвращает правильный ответ.

Вотмой код:

#para gets the tuple T3 or a list of tuples, all of size = n
    def subset_from_kv(para):
        sol = []

        flag = True

        tt = set(para)

        for j in tt:

            for i in set(itertools.combinations(j, n-1)):

                if not(set(i).issubset(inp)): #inp is a list of tuples of size n-1

                    flag = False

            if flag is True:
                sol.append(j)
        return sol

Даже когда все наборы размера "n-1" присутствуют в моем Inp, функция возвращает пустой список [].

...