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

求助:自研冒泡排序算法无法对Pandas DataFrame排序,求排查问题

字典列表冒泡排序问题排查

下面是几个大概率导致你排序失败的原因,对应检查你的代码:

  • 没指定字典的排序键:直接比较两个字典(比如lst[i] > lst[i+1])在Python里是按字典的键集合和键值对顺序来比对,不是你要的业务逻辑排序。必须明确取字典里的某个键对应的值来比较,比如要按'score'排序,得写lst[i]['score'] > lst[i+1]['score']。
  • 冒泡交换逻辑没写对:检查内层循环里的交换步骤,是不是只做了大小判断,但没执行元素交换?正确的交换应该是lst[i], lst[i+1] = lst[i+1], lst[i],漏了这步的话列表完全不会变化。
  • 循环边界出错:外层循环次数应该是len(lst)-1(最后一个元素会自动归位),内层循环的上限要写成len(lst)-1-i(i是外层循环的计数变量),不然会重复比较已经排好序的尾部元素,甚至可能出现索引越界问题。
  • 字典值类型不匹配:如果字典里的排序值是字符串格式的数字(比如'95'而不是95),直接比较会按字符串的ASCII码排序,结果肯定不符合预期,得先转成int()或float()再做比较。
  • 是否正确操作目标列表:如果你的排序函数要修改原列表,别在函数里创建新列表后只操作新列表却不返回;如果是返回新列表,要确保每一步交换都作用在新列表上。

另外提一句:如果是处理Pandas DataFrame,完全不用自己写排序逻辑,直接用df.sort_values(by='列名')就能高效完成排序,比手写冒泡排序快得多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:40:28