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İîÎíī。

私の意見では、簡単な方法は、各リストにペアの文字のみを含む1つのアイテムを追加することですが、それを実装する方法がわかりません。

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

アイテムが1つ追加されたリストのリスト

[['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 に答える