Python多条件排序:先写清主次与方向

按分数降序、姓名升序排列记录时,两个字段的方向不同。先明确主键与次键,再构造排序键,能避免一个reverse参数把所有字段一起反转。

表格数据经过整理后成为结构化卡片
浅色主题概念配图,选自本站AI生成图库;非事件现场或产品实测截图。

把规则写成有先后的句子

本例先比较分数,分数相同时才比较姓名。对数值分数取负值,可以让普通升序排序实现分数降序,而姓名仍按升序处理。这只适用于当前数值字段,不是任意类型都能取负的通用技巧。

区分新列表与原地修改

sorted返回新的列表;list.sort在原列表上排序。排序不会自动复制每条记录里的字典,后续修改记录仍需注意引用关系。名字包含不同文字时,还要明确所需排序规则,不能默认普通字符串顺序就是当地语言习惯。

用并列数据检查次键

示例故意安排两个相同分数,验证姓名次序,同时检查原始列表没有被重新排列。实际数据还可能有缺失值或混合类型,应先定义处理规则。稳定排序有帮助,但不能替你决定业务上的并列规则。

可以运行的练习

rows = [{"name": "B", "score": 90}, {"name": "A", "score": 90}, {"name": "C", "score": 80}]
ordered = sorted(rows, key=lambda row: (-row["score"], row["name"]))
assert [row["name"] for row in ordered] == ["A", "B", "C"]
assert rows[0]["name"] == "B"
print([row["name"] for row in ordered])

示例已在本地隔离环境运行检查。使用固定输入,不访问外部接口,也不读取真实业务文件。

资料与继续学习

Python:排序技巧。资料查阅日期:2026年9月28日。步骤与练习由本站整理。

资料查阅与编辑日期:2026年9月28日。作者:玖柒。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享