我想一个字符串在字典顺序列表作为排序字母排序,Python中的字符串
str='aAaBbcCdE'
排序,
['A','a','a','B','b','C','c','d','E']
但sorted()
给了我这样的输出:
['A','B','C','E','a','a','b','c','d']
如何按字典顺序排序?
我想一个字符串在字典顺序列表作为排序字母排序,Python中的字符串
str='aAaBbcCdE'
排序,
['A','a','a','B','b','C','c','d','E']
但sorted()
给了我这样的输出:
['A','B','C','E','a','a','b','c','d']
如何按字典顺序排序?
不要使用lambda函数时,有作业内建的。也从来没有使用的排序cmp
参数,因为它已过时:
sorted(s, key=str.lower)
或
sorted(s, key=str.upper)
但事实可能并非保持 'A' 和 'A' 的顺序,因此:
sorted(sorted(s), key=str.upper)
这将和sorted
的性质几乎排序列表(第二sorted
)的操作将非常快。
好的解决方案非常感谢 –
cmp
是这样,现在已经过时的老办法,但为后人:
s='aAaBbcCdE'
sorted(s, lambda x,y: cmp(x.lower(), y.lower()) or cmp(x,y))
不保持订单! –
你是什么意思? '['A','a','a','B','b','C','c','d','E']' –
对不起,很多.. –
你可以使用一个2元组的关键:
text='aAaBbcCdE'
sorted(text,key=lambda x:(str.lower(x),x))
# ['A', 'a', 'a', 'B', 'b', 'C', 'c', 'd', 'E']
元组中的第一个元素,str.lower(x)
是(使a
来B
之前)的主键,而x
本身打破联系(使A
在a
之前)。
已弃用且* slow *。 –