Поиск дубликатов в нескольких огромных списках в Python (сравните 2, 3, 4, 5 списков) - PullRequest
0 голосов
/ 29 июня 2018

Так что в настоящее время я работаю над 5 словарями и, возможно, еще над многими из них, по крайней мере, 257000+ записей в каждой. Рассмотрим их как 5 огромных текстовых файлов (размер: 10-20 Мб), скажем, по 10-30 символов в каждой строке. Пример записи может быть таким:

abaissements volontaires,abaissement volontaire.N+NA:mp

Моя задача - найти повторяющиеся слова между / среди разных словарей. Поэтому прежде всего мне нужно обработать файл, чтобы получить, например, только abaissements volontaires из примера. После этой части моя идея состоит в том, чтобы иметь список, который содержит такие элементы, как:

dict_word_list = [[dict_A, [word1, word2, ...]], [dict_B, [word1, word2, ...]]]

Выбор списков вместо диктов происходит просто потому, что в Python неупорядоченные диктовки, и я должен знать имя соответствующего словаря каждого списка слов, поэтому я помещаю соответствующие имена словаря в элемент 0 каждого списка.

Мой вопрос заключается в том, как найти дубликаты между этими огромными списками и сохранить их в названиях словаря? Я попытался , если его нет в списке , но из-за размера файла и очень старого процессора (Intel Core i3 на старом потрепанном ноутбуке на работе, и я не могу использовать свой собственный ноутбук из-за вопросы конфиденциальности), программа просто ошибается там.

Может быть set было бы решением, но как мне перемешать сравнение? Я хотел бы иметь результаты как:

Дублирует dict_A, dict_B: [word1, word2, word3, ...]

Дублирует dict_B, dict_C: [word1, word2, word3, ...]

Дублирует dict_A, dict_B, dict_C: [word1, word2, word3, ...]

1 Ответ

0 голосов
/ 29 июня 2018

Наборы - очень хороший подход. Вы могли бы сделать что-то вроде этого:

dict_1 = {1, 2 ,3}
dict_2 = {2, 3, 4}
dict_3 = {3, 4, 5}
dict_1 & dict_2
{2, 3}
dict_1 & dict_2 & dict_3
{3}

Из документов:

s & t - новый набор с элементами, общими для s и t

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...