最新消息:

python数据去重

Python admin 1609浏览 0评论

一、列表去重(转换为集合)

python 列表本身没有去重的功能,但是我们建议借助别的类型来完成去重的功能,比如集合。
a = [1,2,3,3,2,4]
b = set()
a = list(set(a))
print a

思路先用set先转换成集合,集合里面的值是唯一的。所以这里保证把重复的内容给去掉。然后再转换成我们想要的列表。想要了解更多可以列表相关的功能,可以看下python 列表操作

二、按照数据的一部分去重,但结果要显示全部信息

即今天在为师兄写去重URL的文件,师兄要求分别按照domain、domain+path去重,但结果还是完整的url。因此,无法使用上面通过列表转换为集合的方法来去重。我是用的是字典,主键即为domain或domain+path,值即为完整url。

代码如下:

#!/usr/bin/env python
def fun1(filename,resultname):
fp = open(filename)
fp1 = open(resultname,'w+')
result = {}
for line in fp:
start= line.find('?')
domain = line[0:start]
if domain in result:
continue
result[domain]=line
for each_key in result.keys():
fp1.writelines(result[each_key])
fp.close()
fp1.close()

def fun2(filename,resultname):
fp = open(filename)
fp1 = open(resultname,'w+')
result = {}
for line in fp:
urls= line.split('/')
domain = urls[2]
if domain in result:
continue
result[domain]=line

for each_key in result.keys():
fp1.writelines(result[each_key])
fp.close()
fp1.close()

if __name__=="__main__":
fun1(r'C:\Users\jinglingshu\Desktop\list.txt',r'C:\Users\jinglingshu\Desktop\result1.txt')
fun2(r'C:\Users\jinglingshu\Desktop\list.txt',r'C:\Users\jinglingshu\Desktop\result2.txt')

其实,还可以更简化,不用判断键名是否存在,直接赋值即可(因为没有要求重复的返回第一个URL)

转载请注明:jinglingshu的博客 » python数据去重

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址