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]]}