2015-11-04 67 views
0

我已通過csv文件進行排序,並將其轉換爲列表列表。我現在需要根據特定索引對列表進行排序。列表一次排序正確,然後後續排序不正確

下面的代碼塊的工作:

def highestPoint(copiedList): 

    copiedList.sort(key=lambda x: x[2], reverse=True) 

    date = copiedList[0][0] 
    value = float(copiedList[0][2]) 

    print("\nThe day where the stock reached its highest point is", 
      date, "with" " a value of {:,.2f}".format(value)) 

現在,我認爲我可以複製和粘貼代碼塊,替換在這兩個點的[2]爲了對列表進行排序並打印結果。

顯然,print語句中的單詞與過程的名稱相同,但其他所有內容都相同。

我們有樣本輸出,而且我的答案也不一樣。第一個代碼有效,但其他代碼沒有。

每個代碼塊都是自己的程序,每次傳遞copiedListcopiedList只是原始dataList的淺表副本。

+0

使用'最大()'和'min()'而不是'sort()'會加速你的編碼。他們有相同的「關鍵」論點。 –

+0

我將'copiedList.sort(key = lambda x:x [2])'改爲'copiedList = max(key = lambda x:x [2]'並且它產生了日期爲1.00的整數2,應該是,我做錯了什麼? – Brett

+0

是的,如果你只想得到最大值,你根本不需要修改'copiesList',你只需要:'maxentry = max(copiedList,key = lambda x:注意:如果你轉換爲'float',那麼key函數可能會更好,因爲'lambda x [2])','date = maxentry [0]','value = float(maxentry [2])' :float(x [2])'to match。 – ShadowRanger

回答

0

我認爲當你在文件中讀取時,你沒有將str轉換爲float,因此sort函數可能不起作用。

例如:

print('10' > '5') 
False 

我建議你轉換數字飄起比排序

當你用數字排序的字符串,它會像下面:

numString = ["1","5000","3","6","30","4","2","200"] 
print(sorted(numString)) 

['1', '2', '200', '3', '30', '4', '5000', '6'] 
+0

轉換爲浮點型工作。我以前的代碼嘗試將浮點數排序爲字符串嗎? – Brett

+0

@Brett先前的代碼是比較字符串。 – galaxyan