Эффективный способ проверить, является ли это подмножеством какой-либо группы в Python - PullRequest
0 голосов
/ 26 марта 2020

Каков эффективный способ итерации subset_candidates и проверки, является ли это подмножеством какого-либо набора groups в Python?
В приведенном ниже примере есть только несколько элементов, но я ожидаю, что 10k subset_candidates и 10 тыс. Групп, поэтому я хочу знать эффективный способ.
Может быть, networkX - это решение, но я не знаю, какой метод следует применять в этом случае.

subset_candidates = [
  [2, 3], # true (subset of groups[0]) 
  [10, 12], # false
  [100, 110], # true (subset of groups[2])
  [1, 10, 100], # false
]

groups = [
  [1,2,3],
  [10,11,13],
  [100, 105, 110],
]

Ответы [ 2 ]

7 голосов
/ 26 марта 2020

Вы можете попробовать это, используя set.issubset

s=map(set,subset_candidates)
g=list(map(set,groups))

for subset in s:
    print(any(subset.issubset(i) for i in g))

Выход

True
False
True
False
0 голосов
/ 26 марта 2020

Конвертировать каждый список в subset_candidates и каждый list в groups в set. Затем для каждого набора в subset_candidates проверьте, если issubset(a, b)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...