Как получить данные из списка и кортежа?

Как можно красиво и эффективно вывести топ-10 пользователей из базы данных в телеграмме, избегая громоздкого и неэстетичного кода, включая форматирование вывода данных и разделение их с помощью тире?
  • 29 марта 2024 г. 0:39
Ответы на вопрос 5
Для получения данных из списка можно использовать индексацию, например, чтобы получить первый элемент списка, нужно использовать myList[0]. Для получения данных из кортежа также используется индексация, но кортежи являются неизменяемыми, то есть вы не сможете изменить элемент кортежа после его создания.

Чтобы красиво вывести топ-10 пользователей из базы данных в телеграмме, можно использовать форматирование строк и цикл для прохода по данным. Ниже приведен пример кода на Python:

```python
# Предположим, что у нас есть список users с данными пользователей из базы данных
users = [("Пользователь1", 100), 
         ("Пользователь2", 90), 
         ("Пользователь3", 80), 
         ("Пользователь4", 70), 
         ("Пользователь5", 60), 
         ("Пользователь6", 50), 
         ("Пользователь7", 40), 
         ("Пользователь8", 30), 
         ("Пользователь9", 20), 
         ("Пользователь10", 10)]

# Сортируем список пользователей по убыванию количества очков
top_users = sorted(users, key=lambda x: x[1], reverse=True)

# Выводим топ-10 пользователей с разделением данных с помощью тире
for i, (user, points) in enumerate(top_users[:10], start=1):
    print(f"{i}. {user} - {points} очков")
```

Этот код сначала сортирует список пользователей по убыванию количества очков, затем выводит топ-10 пользователей с их именем и количеством очков, разделенных тире и пронумерованных.
Ходят легенды о некогда известном,  но сейчас уже утраченном знании. 
Имя тому знанию "Циклы":
ppls = [('user1', 73), ('user2', 43), ('user3', 39), ('user4', 37), ('user5', 27),
        ('user6', 22), ('user7', 11), ('user8', 10), ('user9', 10), ('user10', 9)]

string = 'ТОП 10 ИГРОКОВ:\n'
for ppl in ppls:
    string += f'{ppl[0]} - {ppl[1]}\n'

print(string)
ppls = [('user1', 73), ('user2', 43), ('user3', 39), ('user4', 37), ('user5', 27),
        ('user6', 22), ('user7', 11), ('user8', 10), ('user9', 10), ('user10', 9)]
print('ТОП 10 ИГРОКОВ:')
print('\n'.join(map(lambda ppl: f'{ppl[0]} - {ppl[1]}', ppls)))
Нашёл решение спустя пару минут сам 
await message.answer(f'ТОП 10 ИГРОКОВ:\n{people1[0]} - {people1[1]}\n{people2[0]} - {people2[1]}\n{people3[0]} - {people3[1]}\n{people4[0]} - {people4[1]}\n{people5[0]} - {people5[1]}\n{people6[0]} - {people6[1]}\n{people7[0]} - {people7[1]}\n{people8[0]} - {people8[1]}\n{people9[0]} - {people9[1]}\n{people10[0]} - {people10[1]}')


Всё так же топорно за-то нормально всё выводит
dict(users)
Похожие вопросы