У меня есть два списка Python с одинаковым количеством элементов. Элементы первого списка уникальны, а во втором - не обязательно. Например,
list1 = ['e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7']
list2 = ['h1', 'h2', 'h1', 'h3', 'h1', 'h2', 'h4']
Я хочу удалить все "первые встреченные" элементы из второго списка и их соответствующие элементы из первого списка. В основном это означает удаление всех уникальных элементов и первого элемента дубликатов. В приведенном выше примере правильный результат должен быть
>>>list1
['e3', 'e5', 'e6']
>>>list2
['h1', 'h1', 'h2']
Таким образом, элемент "e1" был удален, потому что его соответствующий "h1" был встречен впервые, "e2" был удален, потому что "h2" был замечен впервые, "e3" остался, потому что "h1 'уже был замечен," e4 "был удален, потому что" h3 "был замечен впервые," e5" остался, потому что "h1" уже был замечен, "e6" оставлен, потому что "h2" уже был замечен, а "e7 "'был удален, потому что" h4" был замечен в первый раз.
Каким будет эффективный способ решения этой проблемы? Списки могут содержать тысячи элементов, поэтому я бы предпочел не делать дубликатов или запускать несколько циклов, если это возможно.