我有一个单数字(0-9)和单个字母(aA-zZ)的列表,它们被表示为字符串。我想排序 此列表,以便进行排序,列表看起来象下面这样:Python:按字母顺序排列列表,但所有小写字母优先于大写字母
['0',..'1',..'2',..'a',..'b',..'c',....'z', 'A',.. 'B',.. 'C'.., 'Z']
到目前为止排序,我已经看到了成对的字母在一起,这样“A”遵循“一个的每个方法' 等等。有没有办法对这个列表进行排序,使大写字母被赋予最低优先级?
我有一个单数字(0-9)和单个字母(aA-zZ)的列表,它们被表示为字符串。我想排序 此列表,以便进行排序,列表看起来象下面这样:Python:按字母顺序排列列表,但所有小写字母优先于大写字母
['0',..'1',..'2',..'a',..'b',..'c',....'z', 'A',.. 'B',.. 'C'.., 'Z']
到目前为止排序,我已经看到了成对的字母在一起,这样“A”遵循“一个的每个方法' 等等。有没有办法对这个列表进行排序,使大写字母被赋予最低优先级?
您可以使用sort
或sorted
的key
参数来定义你喜欢的任何一种排序的。例如:
>>> 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()'? – 2015-02-05 20:19:23
哦,这是一个很好的简洁的方法,它也证明了lambda的返回值并不局限于字符串,它可以是布尔值或整数等 – Kevin 2015-02-05 20:22:15
实际上在列表中是什么?他们都是字符串吗? – jonrsharpe 2015-02-05 20:13:08
是的,该列表实际上是所有的字符串,我会编辑我的帖子来反映这一点。 – 2015-02-05 20:15:09