按字符串的顺序对非拉丁字符集进行排序?

时间:2016-03-14 23:45:49

标签: python sorting set non-latin codepoint

我使用以下代码格式排序:

letters = '세븐일레븐'
old = [('세븐', 8), ('븐', 2), ('일', 5), ('레', 4)]
new = sorted(old, key=lambda x: letters.index(x[0]))

对于非拉丁字符,输出与输入相同:

[('세븐', 8), ('븐', 2), ('일', 5), ('레', 4)]

我期待的是:

[('세븐', 8), ('일', 5), ('레', 4), ('븐', 2)]

2 个答案:

答案 0 :(得分:1)

排序没有问题。请注意,字母“븐”在字母字符串中出现两次。由于index返回该字母的第一个索引,所以letters.index('븐')的计算结果为1,这使它具有高优先级。

答案 1 :(得分:1)

为什么期望'일''븐'之前排序? '븐'letters中的第二个字符; index将返回它找到的第一个实例。

如果目标是以不同方式处理特定序列,则需要将letters定义为您关注的完整字符串的list,而不是单个str,例如:< / p>

letters = ['세븐', '일', '레', '븐']

然后,index调用会将'세븐'视为与'븐'分开,并获得预期的输出排序。