python删除列表重复元素_Python去除列表list重复或相似元素的方法

最近博主在分析数据库慢查询日志的时候想使用python把重复或者相似的sql去掉,这样就不用看很多类似的sql了。重复相同的数据去掉比较简单,可以使用内置的set命令完成。

例如:

l1 = ['a','b','c','d','e','a','b','f']

l2 = list(set(l1))

print l2

这个用python很容易实现。

如何去除相似的字符串,即我这边用到的sql语句?好在python方便,有内置库difflib可以使用。difflib计算相似度的方法类似如下:

>>> import difflib

>>> difflib.SequenceMatcher(None, 'abcde', 'abcde').ratio()

1.0

>>> difflib.SequenceMatcher(None, 'abcde', 'zbcde').ratio()

0.80000000000000004

>>> difflib.SequenceMatcher(None, 'abcde', 'zyzzy').ratio()

0.0

有了这个方法,让博主我就先理下思路。

python-list-similar-remove.jpg

先从list的第一个元素开始,遍历该元素后的每个元素并比较。如果判断两个字符串相似,那么就把该元素删除。遍历完后就从第二个元素开始,依次循环,最终得到的就是去除相似元素后的列表了。

暂时博主想到就是这个办法,如果有效率更高更好的欢迎交流。代码类似如下:

def remove_similar(lists,similarity=0.9):

i=0

l=len(lists)

while i

j=i+1

while j

seq=difflib.SequenceMatcher(None,lists[i],lists[j])

ratio=seq.ratio()

if ratio>=similarity:

del lists[j]

l=l-1

else:

j+=1

i+=1

return lists

上面函数默认相似度设置的是0.9,可以按照你的要求修改。

试用后效果好像不错,原来几百条的sql就只剩几条了。。。

参考链接:

https://docs.python.org/2/library/difflib.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值