如何在python中对json数组进行排序?
在这种情况下,我正在尝试实现一个领导者命令( discord.py),该命令需要按级别int 元素对“用户” json 数组进行排序。
大批:
{"947336492487942174": {"experience": 6, "level": 1, "need_xp": 10}, "702338551806951466": {"experience": 7, "level": 3, "need_xp": 10}, "853231575332552704": {"experience": 8, "level": 6, "need_xp": 10}}
代码本身:
@client.command(aliases=['l', 'лидеры'])
async def leaders(ctx):
with open('users.json', 'r') as f:
users = json.load(f)
print(users)
users = sorted(users, key=lambda x: int(x['level']))
embed = discord.Embed(title='Лидеры 🏆', colour=discord.Colour.from_rgb(randint(5,255), randint(5,255), randint(5,255)))
for user in users:
level = int(users[f'{user.id}']['level'])
embed.add_field(name=user, value=f'Уровень: **{level}**')
await ctx.send(embed=embed)
错误:
TypeError: string indices must be integers
问题是你有一个嵌套字典,你写的排序没有考虑到这一点。
要解决它,获取内部字典然后按字段值排序就足够了
level:结论: