按字母顺序排列非英语字符(ç;、ş;、ö;)(Python-3x)

按字母顺序排列非英语字符(ç;、ş;、ö;)(Python-3x),python,arrays,python-3.x,sorting,arraylist,Python,Arrays,Python 3.x,Sorting,Arraylist,有这样一个数组-->[[text1,number1],[text2,number2]…] 我想对这个数组进行排序(按第一个元素(文本))。这些文本包含不同的字符,如ı、ç、ö。。。我找到了定位方法,但无法使用它。我还想描述一下自己的函数。尝试使用排序方法,并将键指定为列表中每个元素的第一个条目 import unicodedata def strip_accents(text): print("HIIIIIIII: %s"%text) return ''.join(char f

有这样一个数组-->[[text1,number1],[text2,number2]…]


我想对这个数组进行排序(按第一个元素(文本))。这些文本包含不同的字符,如ı、ç、ö。。。我找到了定位方法,但无法使用它。我还想描述一下自己的函数。

尝试使用排序方法,并将键指定为列表中每个元素的第一个条目

import unicodedata 
def strip_accents(text):
    print("HIIIIIIII: %s"%text)
    return ''.join(char for char in
                   unicodedata.normalize('NFKD', text)
                   if unicodedata.category(char) != 'Mn')

l=[['ç', 2], ['ç', 10], ['a', 3], ['b', 1], ['d', 7]]
print(sorted(l, key=lambda k: strip_accents(k[0])))
print(l)
# [['a', 3], ['b', 1], ['ç', 2], ['ç', 10], ['d', 7]]
参考资料:


通常像
ç
这样的字符按字母顺序排列在其非重音对应(
c
)之后。从这个意义上讲,您使用的编码可能有助于按字母顺序排序,也可能没有帮助

我建议首先定义您的订单关系:

[
a
a
a
b
c
ç
,…]


实现
你如何准确地定义“字母顺序”?如果给你
ộ 例如,它们应该以什么顺序出现?由于字母没有按您想要的“字母顺序”定义,您需要定义自己的排序函数,包括所需的顺序。A B CčD E F GĞH IİJ K L M N OÖP R SŞT UÜV Y ZAre是否有示例代码?这件事我已经做了两天了。我有作业,但我没有时间问题是“我的字母表是a,b,c,ç,d…但如果我使用排序方法,ç将是最后一个字符(ascii)”,只是对代码做了一些修改来解释@cedricdef