2015-02-06 53 views
-9

我試圖做一個程序,它使用lambda分裂從文本文件中對1-10的分數進行數字排序。如何使用lambda分割在Python中進行排序?

openfile = open("Class1.txt","r") 
     newlist = openfile.readlines() 
     openfile.close() 
     sortedlist = [] 
elif subclass == "3": 
      print("Now sorting highest to lowest scores \n") 
      sortedlist.sort(key=lambda x: x[2]) 
      sortedlist.sort() 
      for eachline in newlist: 
       print(eachline) 

另外還有3個部分的文本文件,名字第二名和得分作爲最後一位。它只需要從最低到最高,反之亦然。

+0

如果您向我們展示您嘗試的內容,以及爲什麼無法使用,則此問題將更容易回答。現在,看起來你希望我們做你的家庭作業。 – Kevin 2015-02-06 19:48:11

+0

修復你的問題,你在問什麼? – 2015-02-06 19:48:12

+0

當我運行程序並選擇它以數字排序分數時,它只是將它們按照它們在文本文件中的方式進行打印,而不對任何分數進行排序或排序,我所要求的只是問題的原因是什麼? – Mafesto 2015-02-06 19:51:05

回答

1

我試過這樣做,發現相同的問題,只是將其更改爲一個int,它將工作。

問題可能是數字排序,但由於它們是字符串,它們按數字排序,而不是整數。

例如,

sorted(['90', '123445']) 

回報

['123445', '90'] 

,因爲1小於9

這裏是一個示例代碼,我做,以幫助您在您的方式:

import csv 
filename = './test.txt' 
with open(filename) as f: 
    yourlist = csv.reader(f, delimiter='\t') 
    yourlist = sorted([x for x in yourlist], key=lambda x: int(x[2])) 

print yourlist 

This是解釋我相信你遇到的問題的一個很好的鏈接。