2015-10-22 192 views
0

我是編程新手,我不確定如何正確執行此操作。我想第二值元組的列表進行排序,如下面,我需要,如果他們整數它們進行排序:排序包含數字字符串的元組列表

[u'value3', '5,423'] 
    [u'value', '1,389'] 
    [u'value1', '3,385'] 
    [u'anothervalue', '2,789'] 
    [u'value2', '430'] 

現在我有這樣的:

sortedList= sorted(listToSort, key=lambda x: (x[1])) 

作爲結果我得到這個:

[u'value', '1,389'] 
    [u'anothervalue', '2,789'] 
    [u'value1', '3,385'] 
    [u'value2', '430'] 
    [u'value3', '5,423'] 

,但我需要它更像:

[u'value3', '5,423'] 
    [u'value1', '3,385'] 
    [u'anothervalue', '2,789'] 
    [u'value', '1,389'] 
    [u'value2', '430'] 

或按升序排列,沒關係。 任何幫助表示讚賞。

+2

邊評論:這些列表,而不是元組:) –

+1

'鍵=拉姆達X:INT(X [1])'應該這樣做: – inspectorG4dget

+2

逗號是逗號還是千位分隔符? –

回答

2

你想以下幾點:

sortedList = sorted(listToSort, key=lambda x: int(x[1].replace(',', '')), reverse=True) 

編輯:原來的答案沒有下降,編輯將上升

+0

這太好了!非常感謝!:) – ldimans

+0

If it work s,你應該使用'int'而不是'float'。 –

+0

編輯爲「int」 – sedavidw

0

如果你的價值觀與逗號作爲成千上萬的分隔符整數,你應該做的:

sortedList = sorted(listToSort, key=lambda x: int(x[1].replace(",", ""))) 

如果你的價值觀是浮動:

sortedList = sorted(listToSort, key=lambda x: float(x[1].replace(",", "."))) 

或者你可以設置正確的區域設置爲不使用replace

convert decimal mark

+1

你不能這樣做,因爲逗號。你可以做'float(x [1] .replace(',','')來擺脫逗號 –

+1

也可以,排序有第4個參數'reverse',可以這樣設置,所以排序順序相反 –

+0

抱歉,我錯過了有價值的逗號。 –