Python不导入Pandas如何按分数对玩家数据排序
不导入Pandas按分数排序玩家数据实现
现有代码存在两个影响排序的问题:
- 读取到的分数为字符串类型,直接排序会按字符规则比对,导致排序结果错误
- 遍历字典时默认按插入顺序输出,未执行排序逻辑
直接使用Python内置的sorted()函数即可完成排序,无需引入任何第三方依赖,修改后的可运行代码如下:
player = {} def loadData(): fileHandle = open('Leaderboard.csv', 'r') player.clear() for line in fileHandle: line = line.strip() if not line: continue data = line.split(",") playerName = data[0].strip() # 分数转整数类型,适配数值排序逻辑 playerScore = int(data[1].strip()) playerPattern = data[2].strip() playerData = { "Score": playerScore, "Pattern": playerPattern } player[playerName] = playerData fileHandle.close() def leaderboard(): print("=========================================") print("LEADERBOARD") # 按分数从高到低排序 sorted_player_list = sorted(player.items(), key=lambda item: item[1]["Score"], reverse=True) for name, info in sorted_player_list: print(f"{name} - {info['Score']} - {info['Pattern']}") print("\n") # 功能测试 loadData() leaderboard()
关键逻辑说明
- 读取数据阶段增加了空行过滤、字段首尾空格去除逻辑,兼容CSV文件中字段带多余空格的格式
sorted()为Python原生内置函数,无需额外导入:参数key=lambda item: item[1]["Score"]指定排序维度为玩家的分数字段,reverse=True指定排序规则为分数从高到低- 运行后输出顺序完全匹配预期:50分的Joshua排在首位,其次是25分的Patricia,最后是10分的Liam
内容的提问来源于stack exchange,提问作者yejin
相关产品推荐
相关产品推荐

