亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 csv 文件轉換為列表以便按數字排序

如何將 csv 文件轉換為列表以便按數字排序

ABOUTYOU 2023-03-01 15:16:10
enter image description here我有一個由 python 腳本制作的 .csv 文件,它存儲一個分數(整數)和一個字符串名稱,一旦轉換為列表,我有沒有辦法對它進行數字排序?我也無法在項目進入 csv 文件之前對其進行排序,因為我需要在 csv 文件中存在預先存在的值,以便我可以按降序輸出它們。如圖所示,我已經嘗試過 map 函數,但它說它需要是一個整數而不是一個列表。代碼+錯誤信息
查看完整描述

3 回答

?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

我可以給你這樣的東西:


我創建的文件:


1,hello

12,idontknow

33,foo

3,bar

0,fooo

7,baaar

這是代碼:


import csv


def csv_sort(file_path):

    opened_file = open(file_path, 'r')

    data = list(csv.reader(opened_file, delimiter = ','))

    return sorted(data, key = lambda x: int(x[0]))

        

if __name__ == '__main__':

    results = csv_sort('path_to_your_file')

    print(results)

結果:


[['0', 'fooo'], ['1', 'hello'], ['3', 'bar'], ['7', 'baaar'], ['12', 'idontknow'], ['33', 'foo']]



查看完整回答
反對 回復 2023-03-01
?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

您正在嘗試將 int() 映射到列表“scores”,而不是映射到您要轉換為 int 的項目。


改變


scores = list(map(int, scores))


list.sort(scores, , reverse=True)

到:


scores = list(map(lambda l:[int(l[0]), l[1]], scores)

list.sort(scores, key=lambda l:l[0], reverse=True)

它應該工作。


除此之外,創建“分數”的循環是不必要的,因為您已經將 csv 轉換為行中的列表:


csv = list(csv.reader(open("HighScores.csv")))

只需將變量名從“csv”更改為“scores”,即可刪除循環。


查看完整回答
反對 回復 2023-03-01
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

我建議使用 Pandas 庫來處理你的 csv。pandas.read_csv() 將讀取您的 csv 文件,然后您可以使用函數 sort_values(by='name of the column') 對數據集進行排序。



查看完整回答
反對 回復 2023-03-01
  • 3 回答
  • 0 關注
  • 200 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號