2016-04-29 63 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

您正在排序的keyv[0],並且從您的其他代碼看起來像v[0]是名稱。更改密鑰以排序最高分可以解決問題。

所以首先你要計算:

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

然後排序每個元組的第二個元素:

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

然而sorted會給你最低的結果,以最高級別默認情況下(這是有道理的,因爲我們通常計數)。所以你的情況,你也必須告訴它扭轉排序:

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

+0

非常感謝您!驚人地幫助我! – Nightly