РЕДАКТИРОВАТЬ: отредактированные опечатки; ключевые значения словаря должны быть словарями, а не наборами.
Я оставлю здесь опечатки, так как приведенные ниже вопросы касаются этого вопроса. Мои извинения за путаницу.
Вот проблема:
Допустим, у меня есть список целых чисел, которые никогда не повторяются:
list1 = [2, 3]
В этом случае существует уникальная пара 2-3 и 3-2, поэтому словарь должен быть:
{2:{3: 1}, 3:{2: 1}}
То есть, есть 1 пара из 2-3 и 1 пара из 3-2.
Для больших списков спаривание такое же, например
list2 = [2, 3, 4]
имеет диктитон
{2:{3: 1}, 3:{2: 1}, 3:{4: 1}, 4:{3: 1}, 2:{4: 1}, 4:{2: 1}}
(1) Как только размер списков станет намного больше, как можно будет алгоритмически находить «уникальные пары» в этом формате, используя структуры данных python?
(2) Я упоминал, что списки не могут иметь повторяющиеся целые числа, например
[2, 2, 3]
невозможно, так как есть две 2.
Тем не менее, можно иметь список списков:
list3 = [[2, 3], [2, 3, 4]]
при этом словарь должен быть
{2:{3: 2}, 3:{2: 2}, 3:{4: 1}, 4:{3: 1}, 2:{4: 1}, 4:{2: 1}}
так как есть две пары 2-3 и 3-2. Как можно «обновить» словарь, учитывая несколько списков в списке?
Это алгоритмическая проблема, и я не знаю наиболее эффективного решения. Моя идея состояла бы в том, чтобы как-то кэшировать значения в списке и перечислять пары ... но это было бы так медленно. Я предполагаю, что есть что-то полезное из itertools
.