2015-10-22 110 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

抱歉,我错过了有价值的逗号。 –