Python 3.11如何按等级再按经验值对字典用户排序生成排行榜?
Python 3.11实现多级排序的排行榜逻辑
给定用户数据字典,需要实现先按等级(level)降序排序,等级相同时按经验值(xp)降序排序的逻辑,最终得到指定的排行榜列表,具体实现如下:
原始数据
users = { "level": { "Mark": 4, "Steve": 3, "Justin": 4, "Markus": 2 }, "xp": { "Mark": 43, "Steve": 25, "Justin": 48, "Markus": 32 } }
实现代码
# 获取所有用户名称 user_names = users["level"].keys() # 执行多级排序:先按level降序,再按xp降序 leaderboard = sorted(user_names, key=lambda name: (-users["level"][name], -users["xp"][name])) print(leaderboard) # 输出结果:['Justin', 'Mark', 'Steve', 'Markus']
逻辑说明
- 利用Python内置的
sorted()函数,通过lambda表达式定义排序依据(key):- 对
level取负数,将默认的升序排序转为等级从高到低的排序; - 当等级相同时,对
xp取负数,继续按经验值从高到低排序;
- 对
sorted()会优先比较元组的第一个元素(level的负数值),仅当第一个元素相等时,才会比较第二个元素(xp的负数值),完全匹配需求。
内容的提问来源于stack exchange,提问作者Tousend1000
相关产品推荐
相关产品推荐

