Попарное множество пересечений в Python

Если у меня есть переменное количество наборов (давайте назовем номерn), которые имеют максимумm каждый элемент, каков наиболее эффективный способ вычисления парных пересечений для всех пар множеств? Обратите внимание, что это отличается от пересечения всехn наборы.

Например, если у меня есть следующие наборы:

A={"a","b","c"}
B={"c","d","e"}
C={"a","c","e"}

Я хочу быть в состоянии найти:

intersect_AB={"c"}
intersect_BC={"c", "e"}
intersect_AC={"a", "c"}

Другим приемлемым форматом (если это облегчает задачу) будет сопоставление элементов в данном наборе с наборами, которые содержат этот же элемент. Например:

intersections_C={"a": {"A", "C"},
                 "c": {"A", "B", "C"}
                 "e": {"B", "C"}}

Я знаю, что один из способов сделать это - создать словарь, отображающий каждое значение в объединении всехn устанавливает список наборов, в которых он встречается, а затем перебирает все эти значения для создания списков, таких какintersections_C выше, но я не уверен, как это масштабируется какn увеличивается и размеры набора становятся слишком большими.

Некоторая дополнительная справочная информация:

Каждый из наборов имеет примерно одинаковую длину, но также очень большой (достаточно большой, чтобы сохранить их все в памяти - реальная проблема, и алгоритм, который избегает того, что было бы предпочтительным, хотя и не является необходимым)Размер пересечений между любыми двумя наборами очень мал по сравнению с размером самих множествЕсли это поможет, мы можем предположить, что нам нужно, относительно порядка входных наборов.

Ответы на вопрос(3)

Ваш ответ на вопрос