2016-04-29 10 views
0

名前をアルファベット順に並べ替えるコードがあり、その名前で得られたスコアの最大値も表示されます。しかし、最高の最高得点を持つ名前を最低の最高得点まで出力するにはどうすればいいのか非常に困惑しています。最高値でソートする

info = open("resultsA.txt", "r") 
splitting =[line.split(",") for line in info] 
sorting = sorted(splitting, key=lambda v:v[0]) 
results= [(name, max(a+b+c)) for name, a, b, c in sorting] 
for name, score in results: 
    print(name+"-"+score) 
    info.close() 

上記のコードはアルファベット順に、私はそれが最も低い最大値まで最高の最大値からのデータを整理する必要が最大値でresultsA.txtに格納されたデータをソートします。

What the code outputs

ありがとうございました。

答えて

1

keyは、v[0]です。コードの残りの部分は、v[0]のように見えます。最大スコアでソートするようにキーを変更すると、問題が解決されます。

results = [(name, max(a+b+c)) for name, a, b, c in splitting]

だからまず、あなたは計算する必要があります。各タプルの2番目の要素に続いて

ソート:

results = sorted(results, key = lambda v: v[1])

しかしsortedは(私たちは通常、カウントアップするので意味があります)、デフォルトで最上位にあなたに最低で結果が得られます。だからあなたの場合には、あなたはまた、順序を逆にすることを指示する必要があり:

results = sorted(results, key = lambda v: v[1], reverse=True)

+0

ありがとうございました!あなたは私を驚くほど助けてくれました! – Nightly

関連する問題