python学习:读写文件和字典排序

发布时间:2019-09-12 07:55:10编辑:auto阅读(1682)

      
            今天来做一个题目,有一个文件,内容如下:

    1. [root@Virtual python]# cat a.csv  源文件
    2. 2004-5-27,2,3,2,3 
    3. 2004-5-27,872,0,872,0 
    4. 2004-5-27,1872,0,872,0 
    5. 2004-5-27,3872,0,872,0 
    6. 2004-5-27,9872,0,872,0 
    7. 2004-5-29,1762,24,1762,24 
    8. 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]#


       脚本比较粗糙,如果有更好的法子,请不吝赐教。。。。

关键字