1. Создать структуру данных, описывающую закрытую социальную сеть:
1.1 Создать список пользователей с идентификаторами и именами: users
1.2 Создать список кортежей, определяющие дружбу между пользователями: fp
1.3 С помощью цикла создать словарь friendships, где ключ user_id и значение: список друзей
2. Создать функцию, определяющую количество друзей у выбранного пользователя: number_of_friends(user).
3. Создать список из кортежей в формате (Имя пользователя, число друзей)
4. Отсортировать список по полю num_friends в убывающем порядке.
Картинка прилагается.
Вот, что у меня получилось.
Во многих местах коряво, безграмотно и некрасиво.
# 1. Создаём структуру данных, описывающую закрытую социальную сеть: # ----------------------------------------------------------------------------- # 1.1 Создаём список пользователей с идентификаторами и именами: users users = [ {"id": 0, "name": "Алексей"}, {"id": 1, "name" : "Петр"}, {"id": 2, "name": "Александр"}, {"id": 3, "name": "Сергей"}, {"id": 4, "name": "Катя"}, {"id": 5, "name": "Владимир"}, {"id": 6, "name": "Аня"}, {"id": 7, "name" : "Дмитрий"}, {"id": 8, "name": "Ирина"}, {"id": 9, "name": "Дарья"}, {"id": 10, "name": "Женя"} ] # ----------------------------------------------------------------------------- # 1.2 Создаём список кортежей, определяющие дружбу между пользователями: fp fp = [ (0, 1), (0, 2), (1, 2), (1, 3), (3, 4), (4, 10), (4, 5), (5, 6), (5, 8), (5, 7), (6, 8), (7, 8), (8, 9),(10, 6), (10, 2)] # Инициализируем словарь пустым списком для идентификатора каждого пользователя friendships = {user["id"]: [] for user in users} # ----------------------------------------------------------------------------- # 1.3 С помощью цикла создаём словарь friendships, где ключ: user_id # и значение: список друзей for i, j in fp: friendships[i].append(j) # Добавить j как друга для i friendships[j].append(i) # Добавить i как друга ДЛЯ j print('\n') print('словарь friendships - список друзей по значениям id') for k,v in friendships.items(): print(k, '-', v) # ----------------------------------------------------------------------------- # 2. Создаём функцию, определяющую количество друзей # у выбранного пользователя: number_of_friends(user). def number_of_friends(u): return len(friendships[u["id"]]) print('\n') print('количество друзей ') m = 0 for k in users: kol = number_of_friends(k) print(users[m]['name'],' - ', kol) m +=1 # ----------------------------------------------------------------------------- # 3. Создаём список из кортежей в формате # Имя пользователя - user["name"], число друзей - number_of_friends(user) num_friends_by_name = [(user["name"], number_of_friends(user)) for user in users] print('\n') print('список из кортежей в формате (Имя пользователя, число друзей)') print(num_friends_by_name) # ----------------------------------------------------------------------------- # 4. Отсортируем список по полю num_friends в убывающем порядке. num_friends_by_name.sort(key = lambda x: x[1], reverse=True) print ('\n') print ('Сортировка по убыванию ') num_friends_by_name
( Особенно пункт 2. )