Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 24, 2022 00:27:58

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

Задание обрисовать базу друзей

Задание:

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. )

Прикреплённый файлы:
attachment socset.jpg (99,9 KБ)

Офлайн

#2 Апрель 2, 2024 10:42:40

restdiscussion
Зарегистрирован: 2023-02-06
Сообщения: 6
Репутация: +  -4  -
Профиль   Отправить e-mail  

Задание обрисовать базу друзей

В данном случае вам асинхронность только помешает
У вас линейная обработка
Вы совершенно не понимаете суть асинка
geometry dash lite

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version