字母和數字的名單我有一個列表的Python:按字母順序排序在
['2,alex', '5,james', '3,ben']
我需要按字母順序排序此。
輸出應該
['2,alex', '3,ben', '5,james']
但是使用.sort
功能不起作用,只會排序它在一個數字順序。
字母和數字的名單我有一個列表的Python:按字母順序排序在
['2,alex', '5,james', '3,ben']
我需要按字母順序排序此。
輸出應該
['2,alex', '3,ben', '5,james']
但是使用.sort
功能不起作用,只會排序它在一個數字順序。
你可以給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']
我認爲這是做與想要的相反。他們想按名稱排序,而不是數字。 – Blckknght
@Blckknght:可能,已編輯。 –
@ TigerhawkT3:是的,也刪除'int()'。 –
在您的示例中,「按數字順序排序」和「按字母順序排序」沒有區別。 – timrau
是的,我只是意識到抱歉,但我可以向你保證,它不按字母順序排序。例如,如果一個額外的元素被添加到列表中,比如說'10,charlie'將會在列表的末尾被數字排序。感謝評論:)。 – jjd7