Пересечение и различие нескольких множеств ⇐ Python
Пересечение и различие нескольких множеств
У меня есть несколько списков «ассоциаций» в качестве входных данных:
input1 = [ («id1», «id2», «id3», «id4»), ('id5',), («id6», «id7», «id8») ] вход2 = [ («id1», «id2», «id4»), ('id3',), ('id5',), («id7», «id6», «id8») ] ввод3 = [ («идентификатор1», «идентификатор2»), ('id3', 'id4'), ('id5',), («id8», «id7», «id6») ] [*]Каждый ввод содержит все идентификаторы.
[*]
Каждый идентификатор появляется во входных данных один раз.
[*]
Количество входов может варьироваться от 1 до 4.
Я хотел бы обработать эти входные данные и сгенерировать что-то вроде этого:
assocs = { # никогда не связан 0: [ ('id5',), ], # связан один раз 1: [ ('id1', 'id3'), ('id1', 'id4'), ('id2', 'id3'), ('id3', 'id4'), ], # связано дважды 2: [ # ('id1', 'id4'), ('id2', 'id4'), ('id3', 'id4'), ], # связано каждый раз 3: [ ('id1', 'id2'), («id6», «id7», «id8»), ] } Я могу каким-то образом посчитать, сколько раз встречается каждая ассоциация:
temp = defaultdict(int) для идентификаторов на карте(sorted, itertools.chain(input1, input2, input3)): для i в диапазоне (1, len(ids)+1): для расчески в itertools.combinations(ids, i): темп[гребенка] += 1 Но теперь я застрял на следующих шагах (которые будут очищать словарь temp), не говоря уже о том, что я не уверен, что вообще выбрал правильную стратегию.
У меня есть несколько списков «ассоциаций» в качестве входных данных:
input1 = [ («id1», «id2», «id3», «id4»), ('id5',), («id6», «id7», «id8») ] вход2 = [ («id1», «id2», «id4»), ('id3',), ('id5',), («id7», «id6», «id8») ] ввод3 = [ («идентификатор1», «идентификатор2»), ('id3', 'id4'), ('id5',), («id8», «id7», «id6») ] [*]Каждый ввод содержит все идентификаторы.
[*]
Каждый идентификатор появляется во входных данных один раз.
[*]
Количество входов может варьироваться от 1 до 4.
Я хотел бы обработать эти входные данные и сгенерировать что-то вроде этого:
assocs = { # никогда не связан 0: [ ('id5',), ], # связан один раз 1: [ ('id1', 'id3'), ('id1', 'id4'), ('id2', 'id3'), ('id3', 'id4'), ], # связано дважды 2: [ # ('id1', 'id4'), ('id2', 'id4'), ('id3', 'id4'), ], # связано каждый раз 3: [ ('id1', 'id2'), («id6», «id7», «id8»), ] } Я могу каким-то образом посчитать, сколько раз встречается каждая ассоциация:
temp = defaultdict(int) для идентификаторов на карте(sorted, itertools.chain(input1, input2, input3)): для i в диапазоне (1, len(ids)+1): для расчески в itertools.combinations(ids, i): темп[гребенка] += 1 Но теперь я застрял на следующих шагах (которые будут очищать словарь temp), не говоря уже о том, что я не уверен, что вообще выбрал правильную стратегию.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Нахождение симметричной разности двух множеств, разделяющих их по началу координат
Anonymous » » в форуме Python - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-