­

python學習:讀寫文件和字典排序

        今天來做一個題目,有一個文件,內容如下:

[root@Virtual python]# cat a.csv       源文件  2004-5-27,2,3,2,3   2004-5-27,872,0,872,0   2004-5-27,1872,0,872,0   2004-5-27,3872,0,872,0   2004-5-27,9872,0,872,0   2004-5-29,1762,24,1762,24   2004-5-28,2011,20,2011,20 

   需求是對文件內容的第二列內容進行排序,排序之後如下顯示:

  1. [root@Virtual python]# cat b.csv 
  2. 2004-5-27,2,3,2,3 
  3. 2004-5-27,872,0,872,0 
  4. 2004-5-29,1762,24,1762,24 
  5. 2004-5-27,1872,0,872,0 
  6. 2004-5-28,2011,20,2011,20 
  7. 2004-5-27,3872,0,872,0 
  8. 2004-5-27,9872,0,872,0 

下面講下我的解題思路,首先把文件內容讀入到一個列表,然後提取需要排序的第二列的欄位值到另外一個列表裡面,2個列表組成一個字典,然後對字典按照值來進行排序

下面來看看腳本吧,注釋寫的比較清晰了:

[root@Virtual python]# cat xiecvs.py #!/usr/bin/env python f=open('a.csv') aa={} bb=[] k=[] for i in f.readlines():                 bb.append(i.split('n'))                   把文件內容讀入列表                 k.append(i.split(',')[1])                 吧需要拍下的列的內容加入到一個列表 for i in range(0,len(bb)):                 aa[bb[i][0]]=int(k[i])                   生成一個字典,鍵是文件內容,值是需要排序的內容 f.close() cc=sorted(aa.items(),key=lambda aa:aa[1])       對字典進行按照值來排序,返回值是個列表 g=open('b.csv','w+') for i in range(0,len(cc)):                 g.write(cc[i][0] + "n")                  吧列表內容按照一定順序寫入新的文件 g.close() [root@Virtual python]#

   腳本比較粗糙,如果有更好的法子,請不吝賜教。。。。