Python. Найти повторы строк во множестве списков

Есть много списков. Несколько тысяч. Нужно найти совпадения каждого элемента каждого списка хотя бы с одним из остальных списков и с каким именно.

Есть ли для этого простая операция? Или придётся городить огород с вложенными циклами и сравнивать каждый список с каждым из оставшихся?


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Заведём словарь ключами в котором будут элементы списков. Под каждый ключ поместим список списков, которые этот ключ содержат:

import pprint

lists = [
    [1, 2, 3],
    [3, 4, 5],
    [5, 6, 7]
]

d = {}
for l in lists:
    for i in l:
        d.setdefault(i, []).append(l)

pprint.pprint(d)
$ python list_instersections.py
{1: [[1, 2, 3]],
 2: [[1, 2, 3]],
 3: [[1, 2, 3], [3, 4, 5]],
 4: [[3, 4, 5]],
 5: [[3, 4, 5], [5, 6, 7]],
 6: [[5, 6, 7]],
 7: [[5, 6, 7]]}
→ Ссылка