python统计一个文本中重复行数的方法
本文实例讲述了python统计一个文本中重复行数的方法。分享给大家供大家参考。具体实现方法如下:
比如有下面一个文件
2
3
1
2
我们期望得到
2,2
3,1
1,1
解决问题的思路:
出现的文本作为key,出现的数目作为value,然后按照value排除后输出
最好按照value从大到小输出出来,可以参照:
inrecentPython2.7,wehavenewOrderedDicttype,whichrememberstheorderinwhichtheitemswereadded. >>>d={"third":3,"first":1,"fourth":4,"second":2} >>>fork,vind.items(): ... print"%s:%s"%(k,v) ... second:2 fourth:4 third:3 first:1 >>>d {'second':2,'fourth':4,'third':3,'first':1}Tomakeanewordereddictionaryfromtheoriginal,sortingbythevalues: >>>fromcollectionsimportOrderedDict >>>d_sorted_by_value=OrderedDict(sorted(d.items(),key=lambdax:x[1]))TheOrderedDictbehaveslikeanormaldict: >>>fork,vind_sorted_by_value.items(): ... print"%s:%s"%(k,v) ... first:1 second:2 third:3 fourth:4 >>>d_sorted_by_value OrderedDict([('first':1),('second':2),('third':3),('fourth':4)])
代码如下:
#coding=utf-8 importoperator f=open("f.txt") count_dict={} forlineinf.readlines(): line=line.strip() count=count_dict.setdefault(line,0) count+=1 count_dict[line]=count sorted_count_dict=sorted(count_dict.iteritems(),key=operator.itemgetter(1),reverse=True) foriteminsorted_count_dict: print"%s,%d"%(item[0],item[1])
补充说明:
1.python的dict对象的两个方法:
items方法将所有的字典项以列表的方式返回,这些列表项中每一项都来自于(键,值)
iteritems方法与items的作用大致相同,但是返回一个迭代器对象而不是列表
2.python的内建函数sorted
>>>help(sorted) Helponbuilt-infunctionsortedinmodule__builtin__: sorted(...) sorted(iterable,cmp=None,key=None,reverse=False)-->newsortedlist
希望本文所述对大家的Python程序设计有所帮助。