Нужна помощь в решении задачи Python
Создай функцию who_is_online, которая принимает список словарей friends и определяет кто из них online, offline или away. Если у юзера стоит статус online, но его не было в сети более 10 минут (lastActivity > 10), то можно считать, что его статус отныне away.
Пример входящих данных:
[{
"username": "Alice",
"status": "online",
"lastActivity": 10
}, {
"username": "Lucy",
"status": "offline",
"lastActivity": 22
}, {
"username": "Bob",
"status": "online",
"lastActivity": 104
}]
Результат функции who_is_online:
{
"online": ["Alice"],
"offline": ["Lucy"],
"away": ["Bob"]
}
Ответы (2 шт):
Автор решения: Timofey
→ Ссылка
Задачка лёгкая, тебе стоило еще немного подумать и пробовать различные варианты решения
def who_is_online(lst_friends: list[dict]) -> dict:
# Создаем словарь, который позже будем возврощать
result = {
'online': [],
'offline': [],
'away': []
}
# Циклом проходимся по всем словарям в списке
for friend in lst_friends:
# Теперь сравниваем каждого друга с его статусом
# И добавляем его в наш словарь result
if friend['status'] == 'offline':
result['offline'].append(friend['username'])
elif friend['lastActivity'] > 10:
result['away'].append(friend['username'])
else:
result['online'].append(friend['username'])
# Возвращаем наш результат!
return result
Автор решения: Точка Слэш
→ Ссылка
def who_is_online(friens: list[dict]):
statuses = {'online': [], 'offline': [], 'away': []} # Этот словарь будет выводом
# Перебираем друзей и, исходя из данных, распределяем их по статусам
for i in friens:
if (stat := i['status']) == 'offline' or i['status'] == 'away':
statuses[stat].append(i['username'])
elif i['lastActivity'] > 10:
statuses['away'].append(i['username'])
else:
statuses['online'].append(i['username'])
# Удаляем пустые значения
toDelete = [i for i, j in statuses.items() if not j]
for i in toDelete:
del statuses[i]
return statuses