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程序设计有所帮助。