Как найти и объединить все дублирующиеся записи о человеке в одну
Из 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)