将包含数字的元组列表排序为字符串

时间:2015-10-22 17:37:09

标签: python sorting

我是编程新手,我不知道如何正确地完成这项工作。我正在尝试使用第二个值对下面的元组列表进行排序,我需要对它们进行排序,就像它们是整数一样:

    [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 个答案:

答案 0 :(得分:2)

您需要以下内容:

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

编辑:原始答案确实在降序,编辑为升序

答案 1 :(得分: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