Python 对字典/json文件中的值进行排序
我有一个discord.py命令,它通过json创建排行榜 cogs/coins.json(字典)如下所示:Python 对字典/json文件中的值进行排序,python,json,discord.py,Python,Json,Discord.py,我有一个discord.py命令,它通过json创建排行榜 cogs/coins.json(字典)如下所示: { "781524858026590218": { "name": "kvbot test platform", "total_coins": 129, "data": { "5640509790795
{
"781524858026590218": {
"name": "kvbot test platform",
"total_coins": 129,
"data": {
"564050979079585803": {
"name": "Bluesheep33",
"coins": 127
},
"528647474596937733": {
"name": "ACAT_",
"coins": 2
}
}
(json文件中带数字的绿色字符串是discord guild/成员ID)
如何使代码更短更清晰
感谢您提前提供帮助,因为我真的不知道如何在dict中查找(排序)前十项,这样做比反复查看dict并在那里做不同的事情容易得多
还有一些更好的代码,比如Dict.get
,用于安全访问
基于JSON数据示例
以open('cogs/coins.json','r')作为f的:
coins_data=json.load(f)
#Get是对dict的安全访问
#Dict.items()返回(Key,Val)对
members\u coins=list(coins\u data.get(str(ctx.guild.id),None)['data'].items())
如果成员为无:#如果未找到数据
等待ctx.send('非数据')
返回
#按对的Val部分和'coins'键对列表进行排序,反之为降序
成员_coins.sort(key=lambda x:x[1]['coins'],reverse=True)
输出=“”
#前10项的列表[:10](如果列表较小,没关系,python不介意)
对于成员id,成员硬币中的VAL[:10]:
输出+=f'{vals[“name”]}:{vals[“coins”]}'
#输出+=f':{vals[“coins”]}#如果您想“提及”显示用户
等待ctx发送(输出)
不要添加图像,复制并粘贴您的代码您想做什么?在你的帖子中清楚地说明它,并且只粘贴相关的代码。这个问题让我想将一个图像粘贴到评论中作为评论。