Как сделать сортировку json файла с помощью асинхронного python?
Пишу бота, хочу сделать таблицу лидеров по опыту. Вот такой вопрос, как сделать, чтобы каждый раз кто то пишет или относится действие к опыту, то json файл, где находятся опыт и лвл, обновлялся. Чтобы было так, у кого больше опыт, тот выше в списке. Код обновления даты от сообщений:
@bot.event
async def on_message(message):
if bot.user in message.mentions:
await message.channel.send("Мой префикс **'**")
if message.author.bot == False:
with open('users.json', 'r') as f:
users = json.load(f)
await update_data(users, message.author)
await add_experience(users, message.author, 1)
await level_up(users, message.author, message.channel)
d = [users]
await sorted(d, key=lambda x: x["experience"])
with open('users.json', 'w') as f:
json.dump(users, f, indent=4)
await bot.process_commands(message)
user.json:
"578950966439837744": {
"experience": 192,
"level": 3
},
Ответы (1 шт):
Автор решения: DiD
→ Ссылка
Применительно к данным JSON вы сможете адаптировать сами. А вот с помощью асинхронного Python есть отличный неэффективный метод сортировки
#!/usr/bin/env python3
from asyncio import run, sleep, wait
from sys import argv
async def f(n):
await sleep(n)
print(n)
if __name__ == '__main__':
run(wait(map(f, map(int, argv[1:]))))