2015-02-05 925 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

相關問題