python如何去除重复行并分别统计重复的行数?已有去除重复的代码

假如1.txt:小明:90张力:79胡丽:81胡军:100王朝:56胡丽:81小明:90王朝:56胡丽:81胡丽:81结果类似这样:小明:90,2张力:79,1胡丽:81... 假如1.txt:
小明:90
张力:79
胡丽:81
胡军:100
王朝:56
胡丽:81
小明:90
王朝:56
胡丽:81
胡丽:81

结果类似这样:
小明:90,2
张力:79,1
胡丽:81,4
胡军:100,1
王朝:56,2

去除重复的代码如有更好的也可用自己的,热心网友给的:
lines_seen = set()
outfile = open("2.txt", "w")
for line in open("1.txt", "r"):
if line not in lines_seen:
outfile.write(line)
lines_seen.add(line)
outfile.close()
另外1.txt非常大,注意效率。
展开
 我来答
波尽天下
推荐于2017-11-24 · TA获得超过834个赞
知道小有建树答主
回答量:202
采纳率:66%
帮助的人:226万
展开全部
python的速度效率是不高的,如何对速度要求比较高的话建议可以用c来写。
我写了这个代码,python2.6+windows xp测试通过。
希望能帮到你~
===================================================

a=[] #初始化要用到的列表a,用于记录原始行信息
b=[] #初始化要用到的列表b,用于记录结果数据,由两项构成。前一项为行信息如“小明:90”,后一项为该行对应的出现次数如2

f1=file("1.txt", "r") #打开1.txt文件
for line in f1:
a.append(line) #将1.txt文件每一行作为一个元素,存入列表a
f1.close

for n in a: #遍历a中每一项(记为n),即1.txt中每一行
flag=1
for i in range(0,len(b)):
if n == b[i][0]: #n与列表b中的每一项对比,如果有相等的:
b[i][1]=b[i][1]+1 #那么对应的出现计数加1
flag=0
break
if flag==1: #如果前面的比对没有一个相等的,即该行是第一次出现:
b.append([n,1]) #那么在列表b中添加改行为新的一项

f2=file("2.txt", "w") #打开2.txt文件,用于输出
for n in b: #输出格式为:行信息 (tab) 出现次数 (回车)
f2.write(str(n[0][0:-1]) + "\t")
f2.write(str(n[1]) + "\n")
f2.close

print "Finished" #完成
匿名用户
2012-02-14
展开全部
这个可以自己做,不是很复杂
追问
关键是思路
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式