如何按编号对此python列表进行排序?

时间:2016-06-01 05:21:40

标签: python list sorting

我试图根据他们的分数对一些人进行排序,然后打印出前三名的人和他们的分数。现在它看起来像这样:

List = ['A 3.0', 'B 4.0', 'C 13.0'] #My list
Sorted = sorted(List, key = lambda item:item.split(" ")[1], reverse = True) #Sorting script
print("Top three scorers and their average goal scores.", "\n", Sorted[0], "\n", Sorted[1], "\n", Sorted[2]) #Printing function

但是当我运行它时,会打印出来:

B 4.0
A 3.0
C 13.0

但'13 .0'并不小于'3.0'和'4.0'。我希望实际的最高数字在顶部,有没有人有答案,我使用'python 3.4.4'。

我在想它可能会按'1'排序,然后按'13 .0'中的'3'排序,好像是单独的字符,但我不知道如何修复它。

3 个答案:

答案 0 :(得分:2)

更改第二行,如下所示..(拆分项目是一个字符串。将其转换为浮点数,它将起作用。)

Sorted = sorted(List, key = lambda item:float(item.split(" ")[1]), reverse = True) #Sorting script

答案 1 :(得分:0)

只需将其转换为float即可进行数字排序,如下所示:

Sorted = sorted(List, key = lambda item:float(item.split(" ")[1]), reverse = True) #Sorting script

答案 2 :(得分:0)

如果您没有具体使用列表,我建议您创建一个类似于下面的对象/元组

 new_tuple= [('A', 3.0),('B', 4.0),('C', 13.0)]#create an object
 Sorted = sorted(tuple, key = lambda new:new[1], reverse = True) #Sorting script
 print("Top three scorers and their average goal scores.", "\n", Sorted[0], "\n", Sorted[1], "\n", Sorted[2]) #Printing function

希望这会有所帮助。一切顺利:)