2017-02-09 128 views
1

我有一個字符串列表,我想按每個字符串的第二個元素排序。排序字符串列表

這裏是我的代碼:

import sys 

line = "" 
for n in [line for line in sys.stdin.readlines()]: 
    list = [] 
    list = n 
    print list.split() 

輸出:

['qlwekjrwer', '0'] 
['sdlkfsdf', '6245'] 
['lkdjfs', '3985'] 
['sdfsdfs', '4085'] 

我想要做的是排序的降序排列的列表中的每個字符串的第二個元素。我知道你不得不使用'list.split()[1]',但我不知道從哪裏開始。

我想要什麼:

['sdlkfsdf', '6245'] 
['sdfsdfs', '4085'] 
['lkdjfs', '3985'] 
['qlwekjrwer', '0'] 

將我要實現一些冒泡排序?

回答

0

使用sorted()功能:

result = sorted([l.split() for l in sys.stdin.readlines()], key=lambda l: int(l[1]), reverse=True) 
print(result) 

輸出:

[['sdlkfsdf', '6245'], ['sdfsdfs', '4085'], ['lkdjfs', '3985'], ['qlwekjrwer', '0']] 
+0

這幾乎是正確的,因爲我的例子中,所有的數字都是相同的長度,但是當它是不一樣的長度沒有關係排序不正確。 –

+0

例如:您的排序['sdfsdf','8677'],['werwer','6245'],['qwerwrg','5866],['oiuois','55666']的輸出,但輸出應該是['oiuois','55666'],['sdfsdf','8677'],['werwer','6245'],['qwerwrg','5866], –

+0

@ChappyKhmao,使用我的更新,它應該工作 – RomanPerekhrest