【问题标题】:sort a list based on integer returns wrong sort根据整数对列表进行排序返回错误的排序
【发布时间】:2020-02-28 10:41:22
【问题描述】:

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

我使用 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.x list sorting arraylist


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 2015-01-08
    • 2016-01-06
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    相关资源
    最近更新 更多