Сортировка по словарю со списками

Задание звучит так:

  • Создайте функцию, определяющую количество друзей у выбранного (каждого) пользователя.
  • Создайте функцию, выводящую на экран пользователей, отсортированных по количеству друзей.

Более чем за пол-дня выродил вот такое:

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-функцией никак не могу обернуть в функцию.

Есть и вторая часть задания:

  • Создайте функцию, определяющую наличие однофамильцев.
  • Создайте функцию, определяющую наличие пользователей с одинаковыми инициалами.
  • Создайте функцию, возвращающую список уникальных пользователей сети в формате Фамилия И.О..
  • Создайте функцию, возвращающую список из уникальных фамилий пользователей сети

Вот тут я просто растерялся - даже не знаю как подступиться.


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