首页 > 解决方案 > 根据整数对列表进行排序返回错误的排序

问题描述

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

我使用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']

我在这里的错误在哪里?

标签: python-3.xlistsortingarraylist

解决方案


试试这个:

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 中的内置名称,您将覆盖它的功能。


推荐阅读