如何按数字对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)
你的问题就会消失。。。