2016-01-09 192 views
-4

字母和數字的名單我有一個列表的Python:按字母順序排序在

['2,alex', '5,james', '3,ben'] 

我需要按字母順序排序此。

輸出應該

['2,alex', '3,ben', '5,james'] 

但是使用.sort功能不起作用,只會排序它在一個數字順序。

+4

在您的示例中,「按數字順序排序」和「按字母順序排序」沒有區別。 – timrau

+0

是的,我只是意識到抱歉,但我可以向你保證,它不按字母順序排序。例如,如果一個額外的元素被添加到列表中,比如說'10,charlie'將會在列表的末尾被數字排序。感謝評論:)。 – jjd7

回答

2

你可以給list.sort()像下面的一個關鍵。如果用數字要排序,你可以使用str.split(',')[0]得到它,並把它轉換成一個整數:

>>> l = ['2,alex', '5,james', '3,ben'] 
>>> l.sort(key=lambda x: int(x.split(',')[0])) 
>>> l 
['2,alex', '3,ben', '5,james'] 

如果你需要按名稱排序,數量不限,只要使用方式相同,但更換[0][1],並刪除int()功能:

>>> l = ['2,alex', '5,james', '3,ben'] 
>>> l.sort(key=lambda x: x.split(',')[1]) 
>>> l 
['2,alex', '3,ben', '5,james'] 

讓我們看到一個明顯的例子:

>>> sorted(l, key=lambda x: int(x.split(',')[0])) 
['5,james', '10,ben', '22,alex'] 
>>> sorted(l, key=lambda x: x.split(',')[1]) 
['22,alex', '10,ben', '5,james'] 
+0

我認爲這是做與想要的相反。他們想按名稱排序,而不是數字。 – Blckknght

+0

@Blckknght:可能,已編輯。 –

+0

@ TigerhawkT3:是的,也刪除'int()'。 –