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).
| 归档时间: |
|
| 查看次数: |
38696 次 |
| 最近记录: |