2016-06-01 6 views
0

私は彼らのスコアに基づいて多くの人々を並べ替えて、トップ3人とそのスコアをプリントアウトしようとしています。このpythonリストを番号でソートするにはどうすればいいですか?

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'を使っている。

別の文字のように'13 'で' 1 'と' 3 'でソートされていると思っていますが、修正方法はわかりません。

+0

これはアルファベット順にソートしているため、文字列をint(item.split( "")[1])の数値に変換するためです。 – Gusman

+0

@Gusman、float? – SilentMonk

+1

@SilentMonkはい、そうです、それは浮動小数点(float)でなければなりません。番号について考えていただけです。int:P – Gusman

答えて

2

の変更以下のように2行目は...(スプリット項目が文字列であるフロートにその変換し、それが動作します。。)

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

ただ、このような数値の順序を持​​つように浮くためにそれを変換します。あなたがリストの使用について具体的なされていない場合

Sorted = sorted(List, key = lambda item:float(item.split(" ")[1]), reverse = True) #Sorting script 
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 
以下のようなもののオブジェクト/タプルを作成行うことをお勧め

欲しいものhelps.Allベスト:

関連する問題