我想要按字母顺序对一个字典进行排序,但是由于土耳其语中有其他字母,因此我不能使用sorted()函数。
例如我们有字母“ç”,它出现在字母“c”之后。如何使字母“ç”出现在字母“c”之后?
顺便说一下,这将不仅仅是一个字母,我们还有很多其他字母,并且字典将包含数百个单词和值。
我想要按字母顺序对一个字典进行排序,但是由于土耳其语中有其他字母,因此我不能使用sorted()函数。
例如我们有字母“ç”,它出现在字母“c”之后。如何使字母“ç”出现在字母“c”之后?
顺便说一下,这将不仅仅是一个字母,我们还有很多其他字母,并且字典将包含数百个单词和值。
以下是基于土耳其字母表的简单解决方案:
alphabet = "abcçdefgğhıijklmnoöprsştuüvyz"
words = ["merhaba", "aşk", "köpek", "Teşekkürle"]
sorted_words = sorted(words, key=lambda word: tuple(alphabet.index(c) for c in word.lower()))
这段代码可以按字典顺序对单词进行排序。它还可以处理包含大写字母的单词。
sorted
的key
参数,但主要挑战是如何定义哪个字母更“大”。也许你可以使用一些字母值的表来进行排序。就像这样:LETTER_VALUES = {
...
"c": 100,
"ç": 110
...
}
sorted_ar = sorted(char_array, key=lambda ch: LETTER_VALUES.get(ch1, ord(ch)))
ord
是“失败默认值”的最简单的示例。letters = "abcçdefgğhıijklmnoöprsştuüvyz"
letters_dict = {i:letters.index(i) for i in letters}
print(sorted("açobzöğge", key=letters_dict.get))
['a', 'b', 'ç', 'e', 'g', 'ğ', 'o', 'ö', 'z']