python - 对以小写字母或大写字母开头的带重音符号的名称进行排序

标签 python list sorting

我希望对以下包含以不同方式书写的名称的列表进行排序:

l=['André','Gerald','Nicole','François','Fraçois','andré']

预期的结果是:

['André', 'andré', 'Fraçois', 'François' 'Gerald', 'Nicole']

但是,我无法获得它。到目前为止,我一直在尝试使用 sorted 命令进行双重排序:

l=sorted(sorted(l, key=str.casefold), key=unidecode.unidecode)

但我的结果并不是我想要的:

['André', 'Fraçois', 'François', 'Gerald', 'Nicole', 'andré']

你们知道任何其他命令可以给我带来正确的排序吗?

最佳答案

这应该有效:

import unidecode
l = ['André','Gerald','Nicole','François','Fraçois','andré']

l = sorted(l, key=lambda s: unidecode.unidecode(s).lower())

结果:

['André', 'andré', 'Fraçois', 'François', 'Gerald', 'Nicole']

Python 排序是 stable ,因此嵌套排序实际上可行。

关于python - 对以小写字母或大写字母开头的带重音符号的名称进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68906047/

相关文章:

Python3 将 unicode 文字字符串解释为 unicode 字符

python - 根据条件拆分 Python 列表

python - 如何让 urllib2 以数组形式返回数据

c++ - C++ 算法/Boost Lib 是否有基数排序?

c - 基数排序算法对于不同顺序的数据可能有不同的运行时间?

Java 集合 - 前 n 个和后 n 个元素

Python Pygame 透明度显示为黑色

python - 您如何恢复或自动排列窗口并启动虚拟环境以使用 Ubuntu 进行开发?

python - 使用正则表达式在 Python 中将 'nnn0n' 替换为 'nnn1n'

python - 根据子列表中的元素对列表进行排序