Как найти и объединить все дублирующиеся записи о человеке в одну

Из csv файла получены данные следующего вида:

lastname,firstname,surname,organization,position,phone,email
Паньшин,Алексей,Владимирович,,,Минфин,,+7(495)748-49-73,[email protected]
Лагунцов,Иван,Алексеевич,,,Минфин,,+7(495)913-11-11 доб.0792,
Лагунцов,Иван,,,,[email protected]

Надо найти дублирующие записи и объединить, а лишнюю строку удалить:

Паньшин,Алексей,Владимирович,Минфин,,+7(495)748-49-73,[email protected]
Лагунцов,Иван,Алексеевич,Минфин,,+7(495)913-11-11 доб.0792,[email protected]

Подскажите пожалуйста как это реализовать.

PS. Данные взяты с открытых источников


Ответы (1 шт):

Автор решения: Dmitry Kuznetsov

Исходя из вашей задачи, предполагаю, что данные, которые вы указали, находятся в формате str. Если две последние строчки об одном и том же человеке, то воспользуйтесь модулем collections:

from collections import OrderedDict


def remove_duplicates(list_: list) -> list:
    k = 0
    while k < len(list_) - 1:
        for list1, list2 in zip(list_[k], list_[k + 1]):
            if list1 == list2:
                new_list = list(OrderedDict.fromkeys(list_[k] + list_[k + 1]))
                list_.remove(list_[k + 1])
                list_.remove(list_[k])
                list_.append(new_list)
            break
        k += 1
    return list_


contact_list = [
    ['lastname', 'firstname', 'surname', 'organization', 'position', 'phone', 'email'],
    ['Паньшин', 'Алексей', 'Владимирович', '', '', 'Минфин', '', '+7(495)748-49-73', '[email protected]'],
    ['Лагунцов', 'Иван', 'Алексеевич', '', '', 'Минфин', '', '+7(495)913-11-11 доб.0792', ''],
    ['Лагунцов', 'Иван', '', '', '', '[email protected]']]

unique_data_list = remove_duplicates(contact_list)
print(unique_data_list)
→ Ссылка