拼音排序工具
每行一个词条,按拼音排序并标注读音:可选全拼或首字母作为排序键,支持升序与降序,可按 A~Z 首字母分组输出;多音字走词组表最长匹配(「重庆」读 chóng qìng、「重量」读 zhòng liàng),非汉字行统一排在汉字之后,同音保持原顺序。
名单要按拼音排(学生名册、通讯录)、词表要按音序整理(词典编目、输入法词库)、图书要按著者音序编目——中文没有字母序,拼音就是它的排序键。本工具每行一个词条,按全拼或首字母排序,可升序降序、可按 A~Z 分组输出,每个词条标注读音方便核对。
口径说明:多音字走词组表最长匹配,与拼音转换工具同一套数据——「重庆」排 chóng、「重量」排 zhòng,两处结果自洽;非汉字行(英文、数字)统一排在汉字之后;同音词条保持原顺序(稳定排序),不会因为排序打乱原有的分组结构。
这个工具解决你的问题了吗?
提交后会把工具名、你的输入与当前结果发送到服务器;请勿填写身份证号、手机号等隐私信息。
AI 助手 会结合你当前的输入与结果回答
追问会再次把当前输入与结果发送到服务器;请勿填写隐私信息。
使用步骤
- 把词条粘进输入框,每行一个(行首行尾空格自动忽略)。
- 选排序键:全拼(更精确)或首字母(更简洁)。
- 选升序/降序,需要音序分组时勾选按 A~Z 分组。
- 看结果区的读音标注核对多音字,复制排序后的列表。
计算原理与示例
多音字怎么定音
多音字按「词组优先」定音:先尝试 2~8 字的词组匹配,命中词组表就用词组读音,未命中才退回单字默认读音。这与拼音转换工具是同一套数据与同一条最长匹配规则,因此「重」在「重庆」里是 chóng,在「重量」里是 zhòng,排序结果与转换结果自洽。
为什么用无声调拼音比较
排序键用的是去掉声调的拼音:声调在字典序里几乎没有可比较的语义(按声调排不符合任何实际习惯),而且同音字之间本来就难分先后。去掉声调后按字母序比较,得到的就是标签页与通讯录里那种「按拼音排列」的效果。
非汉字行怎么处理
不含汉字的行(纯英文、数字、符号开头)统一排在所有汉字行之后,组内按字母序排。这样做的原因是:中英混排时按统一码点排序的结果既不符合拼音习惯也不符合英文习惯,分开处理反而更符合直觉;分组视图里它们会归到「#」组。
代码示例
Python sorted + lazy_pinyin
# pip install pypinyin
from pypinyin import lazy_pinyin
words = ["重庆", "北京", "上海"]
sorted(words, key=lambda w: lazy_pinyin(w))
# ["北京", "上海", "重庆"](b < s < c 是错的?不:c < b < s 才对)
# 实际输出 ["北京", "上海", "重庆"] 的键是 ["bei", "jing"] 等,逐字比较
JavaScript localeCompare 的中文排序
// 浏览器原生:zh-Hans-CN 按拼音排
const words = ["重庆", "北京", "上海"];
words.sort((a, b) => a.localeCompare(b, "zh-Hans-CN"));
// 注意:localeCompare 依赖运行环境的 ICU 数据,
// 多音字口径可能与词组表不同,严格场景用 pinyin-pro 生成键
// words.map(w => ({ w, k: pinyin(w, { toneType: "none" }) })) 再按 k 排
常见问题
多音字按哪个读音排序?
先做词组匹配再退回单字:像「重庆」会被识别成词组读 chóng qìng,排在 C 组;「重量」读 zhòng liàng 排在 Z 组。只有孤立出现、无法组成词的多音字才用单字默认读音,这类字的默认读音通常是最常用的那一个。
排序结果考虑声调吗?
不考虑。比较用的是去掉声调的全拼或首字母,因此 chóng 与 chōng 归为一类。这是有意的:声调序列不符合任何实际排序习惯,去掉后结果更接近通讯录与索引页的排法。需要看声调时,结果里每一行都会显示带声调的拼音供核对。
英文和数字开头的行排在哪里?
统一排在所有汉字行之后,组内按字母序排列,分组视图里归到「#」组。这样做避免了「汉字按拼音、英文按字母」两套规则互相穿插造成的视觉混乱。
同音的两个词,谁在前?
保持它们在原文中的先后顺序(稳定排序)。例如同时存在「张三」与「章三」,读音完全相同,就按你粘贴进来的顺序输出,不会因为内部实现细节而随机跳动。
可以只按首字母排序吗?
可以。排序键切换成首字母后,比较的是每个词条的拼音首字母串(「张三」→ zs),适合做通讯录式的粗排;需要同组内更细的顺序时用全拼排序。两种模式的字段都叫首字母与全拼。
排序会改动我的原文内容吗?
不会。每行文本原样输出,只是行的顺序变了;拼音列是附加的标注,不会写回你的文本。复制结果时复制的是排序后的原文。
一行里有多个词或整句,会怎么排?
整行作为一个词条参与排序,取该行开头汉字的读音作为排序键,多词之间继续按各自的拼音顺序比较,所以「张三 李四」这类行也能得到稳定结果。若希望逐词排序,请先自行按词拆成多行。
生僻字没有收录读音怎么办?
该字会用未标注读音的形态参与排序(通常排在后面),并在结果里提示未收录的字,方便你人工核对。数据来源是常规字表的单字读音,超出范围的字不会伪造读音。
延伸阅读
来自本站原创文章,讲清这个工具背后的算法与口径。