You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Python生成分数排行榜时字符串排序错误的问题

排行榜排序问题修复方案

你遇到的排序错误是因为Python默认对完整字符串做字典序排序,没有把条目开头的分数提取为数值类型参与比较,比如字符串"50xxx"按字典序会比"2000xxx"大,因为首字符'5'的编码比'2'高,才会出现不符合预期的排序结果。

修正后代码

import re

# 读取前5行非空的分数条目
with open("scores.txt", "r", encoding="utf-8") as f:
    score_items = [line.strip() for line in f if line.strip()][:5]

# 按条目开头的数字分数倒序排序
sorted_items = sorted(
    score_items,
    # 匹配每个条目开头的连续数字转整数作为排序依据
    key=lambda item: int(re.match(r"^\d+", item).group()),
    reverse=True
)

# 输出结果
print("原始条目:", " ".join(score_items))
print("排序后条目:", " ".join(sorted_items))

补充说明

  • 用with语法操作文件,不需要手动调用close(),自动释放文件资源,避免出错
  • 如果你的条目里分数和用户名是用空格分隔的(格式示例:100 coolguy),可以把排序的key替换为lambda x: int(x.split()[0]),不需要引入正则依赖
  • 批量读取非空行取前5条的写法,比手动定义5个变量更简洁,后续要调整上榜人数只需要修改切片的数值即可

内容的提问来源于stack exchange,提问作者coolguy11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:15:03