按字典顺序python排序字​​符串

Bip*_*ain 23 python sorting lambda

我想按字典顺序将字符串排序到列表中

str='aAaBbcCdE'
Run Code Online (Sandbox Code Playgroud)

['A','a','a','B','b','C','c','d','E']
Run Code Online (Sandbox Code Playgroud)

sorted()给我这个输出:

['A','B','C','E','a','a','b','c','d']
Run Code Online (Sandbox Code Playgroud)

如何按字典顺序排序?

JBe*_*rdo 31

当有内置的lambda函数时,不要使用lambda函数.也永远不要使用cmpsorted 的参数,因为它已被弃用:

sorted(s, key=str.lower)
Run Code Online (Sandbox Code Playgroud)

要么

sorted(s, key=str.upper)
Run Code Online (Sandbox Code Playgroud)

但这可能无法保持'A'和'a'的顺序,所以:

sorted(sorted(s), key=str.upper)
Run Code Online (Sandbox Code Playgroud)

sorted对于几乎排序的列表(第二个sorted),操作的性质将非常快.


unu*_*tbu 12

您可以使用2元组作为密钥:

text='aAaBbcCdE'
sorted(text,key=lambda x:(str.lower(x),x))
# ['A', 'a', 'a', 'B', 'b', 'C', 'c', 'd', 'E']
Run Code Online (Sandbox Code Playgroud)

元组中的第一个元素str.lower(x)是主键(在a之前制作B),而x它本身则断开了联系(A之前的结果a).