根据整数对列表进行排序会返回错误的排序

时间:2019-11-02 12:13:49

标签: python-3.x list sorting arraylist

我正在尝试对每个索引中包含一个整数和一个字符串的列表进行排序。就像示例中的那个一样。

我使用了sort()并拆分了,但总是得到我期望的错误顺序

def takeSecond(elem):
    return elem.split("|")[2]
list = ['|val1: 0|0','|val: 0|80','|val1 0|140','|val1: 0|20','|val1: 0|90']
list.sort(key=takeSecond)
print(list)

返回:

['|val1: 0|90','|val: 0|80','|val1: 0|20','|val1: 0|0','|val1 0|140']

我希望得到这个:

['|val1: 0|140','|val: 0|90','|val1: 0|80','|val1: 20|0','|val1 0|0']

我的错在哪里?

1 个答案:

答案 0 :(得分:1)

尝试一下:

l = ['|val1: 0|0','|val: 0|80','|val1 0|140','|val1: 0|20','|val1: 0|90']
l.sort(key=lambda x:int(x.rsplit('|')[-1]), reverse=True)

这将根据需要对列表进行排序。预期的输出是:

In [18]: l                                                                                                                                                                                                  
Out[18]: ['|val1 0|140', '|val1: 0|90', '|val: 0|80', '|val1: 0|20', '|val1: 0|0']

另外请注意:

  

请勿将list用作变量名。 list是python中的内置名称,您将覆盖其功能。