Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 22, 2022 17:55:02

Victor_M
Зарегистрирован: 2022-08-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

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

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

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

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

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

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

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

Отредактировано Victor_M (Авг. 22, 2022 17:57:51)

Офлайн

#2 Авг. 22, 2022 22:11:21

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2749
Репутация: +  184  -
Профиль   Отправить e-mail  

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

 In [1]: community_of_friends = {
...:     'С.В. Дроздов' : ['П.В. Дроздов', 'И.И. Воробьёв', 'А.С. Синицин',
...:                       'Ф.С. Грачёв', 'А.К. Петухов'],
...:     'П.В. Дроздов' : ['С.В. Дроздов', 'А.С. Голубева', 'М.Л. Гусев'],
...:     'И.И. Воробьёв' : ['Л.Т. Воронин', 'С.В. Дроздов', 'П.В. Дроздов',
...:                      'М.Л. Цаплин'],
...:     'А.С. Синицин' : ['С.В. Дроздов', 'П.В. Дроздов'],
...:     'Ф.С. Грачёв' : ['С.В. Дроздов', 'П.В. Дроздов', 'А.К. Петухов'],
...:     'А.С. Сорокина' : ['Л.Т. Воронин'],
...:     'Л.Т. Воронин' : ['К.К. Чайкин', 'А.С. Уткин']
...:     }
In [2]: s = { k:len(v) for k,v in community_of_friends.items() }
In [3]: s
Out[3]:
{'С.В. Дроздов': 5,
'П.В. Дроздов': 3,
'И.И. Воробьёв': 4,
'А.С. Синицин': 2,
'Ф.С. Грачёв': 3,
'А.С. Сорокина': 1,
'Л.Т. Воронин': 2}
In [4]: sorted(s, key=lambda x: s[x])
Out[4]:
['А.С. Сорокина',
'А.С. Синицин',
'Л.Т. Воронин',
'П.В. Дроздов',
'Ф.С. Грачёв',
'И.И. Воробьёв',
'С.В. Дроздов']



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Авг. 23, 2022 22:02:07

Victor_M
Зарегистрирован: 2022-08-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Спасибо.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version