2017-10-14 55 views
-2

我一直在嘗試幾個小時,但我無法修復它(我是編碼/ python新手)。我如何分類這些?

with open('spelers.csv', 'r') as speler_lijst: 
       spelers_lijst_lezen = csv.reader(speler_lijst, delimiter=',', quotechar='"') 
       for line in spelers_lijst_lezen: 
        print(line[0],"\t", line[1]) 

所以我有它,它打印從CSV文件如同我所有的輸入:

1 Name 1 
5 Name 5 
10 Name 10 
2 Name 2 

現在,我想對它們進行排序。但是,我嘗試過的所有事情都給了我錯誤或不是效果所希望的。

感謝

+2

請顯示你的嘗試和你得到的錯誤。 –

+0

您可以添加CSV文件,以便我們可以運行一個工作示例?你可能想看看numpys argsort-function。 – Stein

+0

如何添加csv? (對不起,編碼和本網站是新的) – rawdps

回答

1

嘗試:

with open('spelers.csv', 'r') as speler_lijst: 
    spelers_lijst_lezen = csv.reader(speler_lijst, delimiter=',', quotechar='"') 
    for line in sorted(spelers_lijst_lezen, key=lambda i: i[0]): 
     print(line[0],"\t", line[1]) 

lambda功能使用索引要排序

編輯:如果您的排序鍵不是字符串使用int投:

sorted(spelers_lijst_lezen, key=lambda i: int(i[0])) 
+0

這確實適用於分類,使它更接近一步。但它排序的第一個數字,然後第二等等所以1,10,11,2,20,21等 我認爲這是因爲我使這些輸入較早。所以我需要將第一部分變成一個int我猜 – rawdps

+0

你可能想在關鍵函數中使用int(i [0]),因爲排序可能應該用數字來完成('10'在'2之後'以數字排序,而「10」在詞典字符串排序中位於「2」之前)。 – Blckknght

+0

是的修復了這個問題。謝謝大家 – rawdps