61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
''' ****** Задание 11 из 20 *********
|
||
* Напишите программу, которая по списку фамилий сотрудников выводит список всех однофамильцев (тех, чьи фамилии встречаются более одного раза), а также количество их повторений.
|
||
|
||
Формат ввода
|
||
В первой строке указывается количество мужчин — сотрудников организации (
|
||
N
|
||
N).
|
||
Затем идут
|
||
N
|
||
N строк с фамилиями этих сотрудников в произвольном порядке.
|
||
|
||
Формат вывода
|
||
Список однофамильцев в организации с указанием их количества в алфавитном порядке.
|
||
Если таковых нет — вывести «Однофамильцев нет».
|
||
|
||
|
||
Подсказка
|
||
В отличие от предыдущей задачи, здесь вам требуется сформировать итоговый список фамилий, отсортировать его и только потом уже вывести.
|
||
|
||
Пример 1
|
||
Ввод
|
||
|
||
6
|
||
Иванов
|
||
Петров
|
||
Сидоров
|
||
Петров
|
||
Иванов
|
||
Петров
|
||
Вывод
|
||
|
||
Иванов - 2
|
||
Петров - 3
|
||
'''
|
||
|
||
|
||
if __name__ == "__main__":
|
||
total_entries = int(input())
|
||
name_list = []
|
||
|
||
for _ in range(total_entries):
|
||
person_name = input()
|
||
name_list.append(person_name)
|
||
|
||
duplicate_records = [
|
||
f"{name} - {name_list.count(name)}"
|
||
for name in set(name_list)
|
||
if name_list.count(name) > 1
|
||
]
|
||
|
||
if duplicate_records:
|
||
for record in sorted(duplicate_records):
|
||
print(record)
|
||
else:
|
||
print('Однофамильцев нет')
|
||
|
||
|
||
|
||
|
||
|