Сортировка по словарю со списками
Задание звучит так:
- Создайте функцию, определяющую количество друзей у выбранного (каждого) пользователя.
- Создайте функцию, выводящую на экран пользователей, отсортированных по количеству друзей.
Более чем за пол-дня выродил вот такое:
community_of_friends = {
'С.В. Дроздов' : ['П.В. Дроздов', 'И.И. Воробьёв', 'А.С. Синицин',
'Ф.С. Грачёв', 'А.К. Петухов'],
'П.В. Дроздов' : ['С.В. Дроздов', 'А.С. Голубева', 'М.Л. Гусев'],
'И.И. Воробьёв' : ['Л.Т. Воронин', 'С.В. Дроздов', 'П.В. Дроздов',
'М.Л. Цаплин'],
'А.С. Синицин' : ['С.В. Дроздов', 'П.В. Дроздов'],
'Ф.С. Грачёв' : ['С.В. Дроздов', 'П.В. Дроздов', 'А.К. Петухов'],
'А.С. Сорокина' : ['Л.Т. Воронин'],
'Л.Т. Воронин' : ['К.К. Чайкин', 'А.С. Уткин']
}
def number_of_friends(friends_base):
num_friends = []
for key, value in friends_base.items():
x = key
y = []
y.extend(value)
z = (x,len(y))
num_friends.append(z)
return(num_friends)
num_friends = number_of_friends(community_of_friends)
num_friends.sort(key = lambda kol_friends: kol_friends[1], reverse=True)
num_friends
Прошу оценить - может есть другие варианты. Как-бы работает, но что-то подозрительно … т.к. получилось методом тыка. Сортировку по lambda-функции нашёл в сети, но смысл её синтаксиса пока плавает. (Мне бы пока попроще - без “синтаксического сахара”, хотя подобные примеры заставляют здорово покопаться). И эту часть с lambda-функцией никак не могу обернуть в функцию.
Есть и вторая часть задания:
- Создайте функцию, определяющую наличие однофамильцев.
- Создайте функцию, определяющую наличие пользователей с одинаковыми инициалами.
- Создайте функцию, возвращающую список уникальных пользователей сети в формате Фамилия И.О..
- Создайте функцию, возвращающую список из уникальных фамилий пользователей сети
Вот тут я просто растерялся - даже не знаю как подступиться.