Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何按数字对python列表进行排序?_Python_List_Sorting - Fatal编程技术网

如何按数字对python列表进行排序?

如何按数字对python列表进行排序?,python,list,sorting,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", Sorte

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

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”小。我希望实际最高的数字位于顶部,有人知道答案吗,我使用的是“Python3.4.4”


我在想,它可能是在“13.0”中按“1”排序,然后按“3”排序,就像是单独的字符一样,但我不知道如何修复它。

将第二行更改为如下所示。。(拆分项是一个字符串。将其转换为浮点数即可。)


将第二行更改如下。。(拆分项是一个字符串。将其转换为浮点数即可。)


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

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

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

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

如果您不明确使用列表,我建议您创建一个类似于以下内容的对象/元组

 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

希望这能有所帮助。祝你一切顺利:)

如果你对列表的使用不太明确,我建议你创建一个类似下面的对象/元组

 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

希望这有帮助。祝你一切顺利:)

这是因为你要按字母顺序排序,请将字符串转换为带有int(item.split(“”[1])的数字。@silentmank是的,你是对的,它应该是float(),我只是在考虑数字,首先出现的是int:p这个问题的答案对于一个如果使用更合理的数据格式就不会出现的问题来说是一个很好的解决办法。为什么要将
分数
表示为空格分隔的字符串?使用一个
元组(str,float)
你的问题就消失了……这是因为你按字母顺序排序,把字符串转换成一个带有int(item.split(“”[1])的数字。@silentmank是的,你是对的,它应该是float(),我只是在考虑数字,首先出现的是int:p这个问题的答案对于一个如果使用更合理的数据格式就不会出现的问题来说是一个很好的解决办法。为什么要将
分数
表示为空格分隔的字符串?使用
元组(str,float)
你的问题就会消失。。。