我希望对以下包含以不同方式书写的名称的列表进行排序:
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/