1

问题的开始在这里自定义排序python

我想按这个字母进行特殊排序

alphabet = u'aáàAâÂbBcCçÇdDeéEfFgGğĞhHiİîÎíīıIjJkKlLmMnNóoOöÖpPqQrRsSşŞtTuUûúÛüÜvVwWxXyYzZ

[aáàAâÂ]这组字符应该具有相同的优先级。在较早的线程中,@happydave 建议使用 (alphabet.index(c)/2),

这应该将列表中的每对相邻字符映射到相同的优先级。

但就我而言,我没有一对性格?例如:aáàAâÂ、eéE、uUûúÛ、óoO、iİîÎíī。

在我看来,简单的方法是添加一个项目,每个列表只包含成对的字符,但我不知道如何实现它。

 [['word1', <Element tag at b719a4cc>], ['word2', <Element tag at b719a6cc>]]

添加一项的列表列表

[['word1_', 'word1', <Element tag at b719a4cc>], ['word2_', 'word2', <Element tag at b719a6cc>]]
4

2 回答 2

4
s='aáàAâÂbBcCçÇdDeéEfFgGğĞhHiİîÎíīıIjJkKlLmMnNóoOöÖpPqQrRsSşŞtTuUûúÛüÜvVwWxXyYzZ'
s2='aaaaaabbccccddeeeffgggghhiiiiiiiijjkkllmmnnoooooppqqrrssssttuuuuuuuvvwwxxyyzz'
trans = str.maketrans(s, s2)

def unikey(seq):
    return seq[0].translate(trans)

使用这个函数作为key参数sorted

于 2012-05-29T02:35:40.530 回答
4

太多的工作。设置您的语言环境,然后key=locale.strxfrm

并且永远不要对 UTF-8 字符进行排序;总是首先解码unicode

于 2012-05-29T02:00:58.610 回答