Эффективно находите совпадающую строку среди подстрок в больших списках.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Эффективно находите совпадающую строку среди подстрок в больших списках.

Сообщение Anonymous »

У меня есть два списка, каждый из которых содержит около 5 миллионов элементов. List_1 — это список кортежей, по две строки в каждом кортеже. List_2 — длинный список строк.
Я пытаюсь найти составную строку, состоящую из этих кортежей, в List_2.Итак, если кортеж из List_1 равен ("foo", "bar"), а List_2 содержит ["flub", "blob", "barstool" , "foo & bar: злоключения в python"], я бы попытался получить "foo & bar: злоключения в python" из List_2.
В настоящее время я делаю это путем перебора List_1 и понимания для сканирования List_2. Несмотря на то, что поиск в List_2 выполняется быстро, его выполнение занимает около секунды, для этого потребуется перебрать весь List_1, и, следовательно, для его поиска требуется слишком много времени (большая часть 1000 часов). Complete, что заставило меня задуматься, существует ли более быстрый и эффективный способ сделать то же самое.
Пример кода:

Код: Выделить всё

list_1 = [] #Insert List
list_2 = [] #Insert List

for search_term in list_1:
compound_string = "{search_first} & {search_second}".format(search_first=search_term[0], search_second=search_term[1])
result = next((s for s in list_2 if compound_string in s), None) #Short-circuit, so we don't need to search through the whole list
if result:
#do exciting things
Я рассматривал возможность использования множества и пересечения для выполнения сравнения, однако использование множества пересечений для сравнения работает только с целыми строками. Поскольку я не знаю всю строку заранее, использование этого метода кажется невозможным без использования цикла for и списков, что может привести к той же проблеме.


Подробнее здесь: https://stackoverflow.com/questions/787 ... arge-lists
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Эффективно находите совпадающую строку среди подстрок в больших списках.
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Эффективно находите совпадающую строку среди подстрок в больших списках.
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Эффективно находите совпадающую строку среди подстрок в больших списках.
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Эффективно находите совпадающую строку среди подстрок в больших списках.
    Anonymous » » в форуме Python
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Эффективно находите совпадающую строку среди подстрок в больших списках.
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»