基于 pypinyin 的拼音首字排序
* 以下方法皆只根据词语的第一个汉字进行排序
from pypinyin import lazy_pinyin
def pinyin_sort(lis):
"""
根据列表元素的首个汉字拼音进行排序
:param lis: 列表对象
:return:
"""
lis.sort(key=lambda i: lazy_pinyin(i)[0][0])
from pypinyin import lazy_pinyin
import re
def pinyin_dict_sort(dict,key):
"""
当列表中的元素为字典(列表嵌套字典)时使用 常用于序列化后的queryset
根据字典指定key的首个汉字拼音进行排序
:param dict: 包含字典的列表对象
:param key: 作为排序标准的字典key
"""
res = sorted(dict, key=lambda i:lazy_pinyin(i[key]))
for i in res:
m = re.match(r"\D", i[key])
if m:
_ = res.index(i)
return res[_:] + res[:_]