Bac*_*cai 5 python sorting standards non-english alphabetical
作为世界其他地区的公民,我对计算机默认不适应国际问题这一事实感到非常恼火.许多网站仍然不使用Unicode,PHP仍处于黑暗时代.
当我想用罗马尼亚语对单词或名字进行排序时,我总是要编写自己的函数,这些函数几乎没有效率.必须有一些区域设置使排序函数服从指定语言的字母顺序,对吗?
我主要对Python,Java和JavaScript感兴趣.
编辑:正如Chris Morgan所指出的,我在这里找到了我的Python答案.
在Python中,您始终可以使用带有键参数的已排序函数.例如,在土耳其语中,我们有'ç','ı','ş'等字母.如果我想根据那个字母排序,我会使用一个字符串排序的字符串,并根据字符串排序这个,像这样:
>>> letters="abcçdefg?h?ijklmnoöprs?tuüvyz" #Turkish alphabet
>>> sorted("açobzö?ge")
['a', 'b', 'e', 'g', 'o', 'z', 'ç', 'ö', '?'] #Python's default
>>> sorted("açobzö?ge", key=lambda i: letters.index(i))
['a', 'b', 'ç', 'e', 'g', '?', 'o', 'ö', 'z'] #With key parameter
Run Code Online (Sandbox Code Playgroud)
注意:使用Python 3; 处理Unicode更容易.
编辑,正如评论所说,如果我们使用字典,这个过程会更有效:
>>> letters="abcçdefg?h?ijklmnoöprs?tuüvyz"
>>> d={i:letters.index(i) for i in letters}
>>> sorted("açobzö?ge", key=d.get)
['a', 'b', 'ç', 'e', 'g', '?', 'o', 'ö', 'z']
Run Code Online (Sandbox Code Playgroud)