Лучший способ поиска между несколькими большими списками python - PullRequest
1 голос
/ 30 мая 2020

BG: Все данные взяты из базы данных, я передал их в pandas DataFrame. Я создал идентификатор, объединив несколько уникальных столбцов вместе. Конечная цель - выполнить конкатенацию строк в main_list. например,

1. id 2. item (item2 = item_group = item_name = item_value,item_name2 = item_value2, item3 = item_name = item_value)

Я пробовал линейный поиск, но производительность очень низкая - ~ 100 тыс. записей для каждого списка.

Итак, у меня есть основной список, который содержит набор элементов

1. id 2. item (this is my item to search,item2,item3,item4)

список поиска A / item_group список содержит (поэтому я сначала попытаюсь сопоставить item_group, чтобы увидеть, существует ли он в текущий список) Проблемы со списком поиска A заключаются в том, что item_group может содержать кратные item_name, поэтому для соответствия item_group мне нужны значения item_name, чтобы я мог искать в списке поиска B

1. item_group 2. item_name 3. id

список поиска B можно назвать списком под_элементов (тогда я сопоставлю имя_элемента, чтобы увидеть, существует ли он здесь)

1. item_name 2. item_value 3. id

Испытанные методы

Попытка создать словарный запас на основе 2-го списка для эффективного поиска, но по-прежнему имели проблемы с производительностью, потребовалось очень много времени, чтобы просто заполнить словарь Мышление выполнения соединений

Судя по изображению, объединение на основе идентификатора на самом деле не будет работать, потому что 1 идентификатор может содержать несколько элементов enter image description here

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