Python:按字母顺序对列表排序,但所有小写字母优先于大写字母
我有一个由单个数字(0-9)和单个字母(aA-zZ)组成的列表,它们表示为字符串。我想分类 此列表在排序时如下所示:Python:按字母顺序对列表排序,但所有小写字母优先于大写字母,python,sorting,Python,Sorting,我有一个由单个数字(0-9)和单个字母(aA-zZ)组成的列表,它们表示为字符串。我想分类 此列表在排序时如下所示: ['0',..'1',..'2',..'a',..'b',..'c',....'z', 'A',.. 'B',.. 'C'.., 'Z'] 到目前为止,我见过的每一种排序方法都将字母配对在一起,使“A”跟在“A”后面,以此类推。有没有办法对列表进行排序,使大写字母的优先级最低?您可以使用排序或排序的键参数来定义您喜欢的排序类型。例如: >>> s = "12
['0',..'1',..'2',..'a',..'b',..'c',....'z', 'A',.. 'B',.. 'C'.., 'Z']
到目前为止,我见过的每一种排序方法都将字母配对在一起,使“A”跟在“A”后面,以此类推。有没有办法对列表进行排序,使大写字母的优先级最低?您可以使用
排序
或排序
的键
参数来定义您喜欢的排序类型。例如:
>>> s = "123ABCabc"
>>> print sorted(s, key=lambda c: c.lower() if c.isupper() else c.upper())
['1', '2', '3', 'a', 'b', 'c', 'A', 'B', 'C']
在这里,如果一个字母是小写,为了排序的目的,我们把它当作大写,反之亦然。不带大小写的字符(如数字)不变。列表中实际有什么?它们都是字符串吗?是的,列表实际上都是字符串,我将编辑我的帖子来反映这一点。
print(sorted(s,key=lambda x:x.isupper())
?噢,这是一种非常简洁的方法。它还表明lambda的返回值不限于字符串。它可以是布尔值或整数,等等