我试图根据他们的分数对一些人进行排序,然后打印出前三名的人和他们的分数。现在它看起来像这样:
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'排序,好像是单独的字符,但我不知道如何修复它。
答案 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
希望这会有所帮助。一切顺利:)