gpt4 book ai didi

python - Discord.py 级别最高的前 5 名用户

转载 作者:行者123 更新时间:2023-12-04 15:00:06 24 4
gpt4 key购买 nike

我在discord.py中创建了一个关卡系统,数据保存在json中。我有一个显示给定用户级别的命令,但我不知道如何使前 5 名用户具有最高级别。我在任何地方都找不到如何做。

这是我的关卡系统代码:

async def update_data(users, user, server):
if not str(server.id) in users:
users[str(server.id)] = {}
if not str(user.id) in users[str(server.id)]:
users[str(server.id)][str(user.id)] = {}
users[str(server.id)][str(user.id)]['experience'] = 0
users[str(server.id)][str(user.id)]['level'] = 1
elif not str(user.id) in users[str(server.id)]:
users[str(server.id)][str(user.id)] = {}
users[str(server.id)][str(user.id)]['experience'] = 0
users[str(server.id)][str(user.id)]['level'] = 1

async def add_experience(users, user, exp, server):
users[str(user.guild.id)][str(user.id)]['experience'] += exp

async def level_up(users, user, channel, server):
experience = users[str(user.guild.id)][str(user.id)]['experience']
lvl_start = users[str(user.guild.id)][str(user.id)]['level']
lvl_end = int(experience ** (1/4))
if str(user.guild.id) != '757383943116030074':
if lvl_start < lvl_end:
await channel.send('{} has leveled up to Level {}'.format(user.mention, lvl_end))
users[str(user.guild.id)][str(user.id)]['level'] = lvl_end

JSON 文件:

{"678938477710278667": {"experience": 692, "level": 5}, "627244746729062421": {"experience": 48, "level": 2}, "826822736340713522": {"678938477710278667": {"experience": 2548, "level": 7}, "627244746729062421": {"experience": 16, "level": 2}}}

最佳答案

正如评论所说,你需要通过你的字典进行排序并获得最高级别和经验。

# sorting a dictionary with key
top5 = sorted(a.items(), key= lambda x: (x[1]['level'], x[1]['experience']), reverse=True)[:5]

它所做的是传递一个元组作为键,python 可以对其进行排序。

引用资料:

关于python - Discord.py 级别最高的前 5 名用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67111626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com