2015-02-05 1024 views
-1

我有一个单数字(0-9)和单个字母(aA-zZ)的列表,它们被表示为字符串。我想排序 此列表,以便进行排序,列表看起来象下面这样:Python:按字母顺序排列列表,但所有小写字母优先于大写字母

['0',..'1',..'2',..'a',..'b',..'c',....'z', 'A',.. 'B',.. 'C'.., 'Z'] 

到目前为止排序,我已经看到了成对的字母在一起,这样“A”遵循“一个的每个方法' 等等。有没有办法对这个列表进行排序,使大写字母被赋予最低优先级?

+0

实际上在列表中是什么?他们都是字符串吗? – jonrsharpe 2015-02-05 20:13:08

+0

是的,该列表实际上是所有的字符串,我会编辑我的帖子来反映这一点。 – 2015-02-05 20:15:09

回答

1

您可以使用sortsortedkey参数来定义你喜欢的任何一种排序的。例如:

>>> 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'] 

在这里,如果一个信越低的情况下,我们把它作为上壳体用于排序的目的,并且反之亦然。没有大小写的字符(如数字)保持不变。

+1

'print(sorted(s,key = lambda x:x.isupper()'? – 2015-02-05 20:19:23

+1

哦,这是一个很好的简洁的方法,它也证明了lambda的返回值并不局限于字符串,它可以是布尔值或整数等 – Kevin 2015-02-05 20:22:15

相关问题