python从后面删除重复项_如何在python中从列表中删除重复项

此解决方案将继续查看两个元素的对,直到它查看了所有对而没有过滤任何一个。这不是一个有效的解决方案,因为它将继续一遍又一遍地查看同一对,而且它也没有利用可能的传递性。但这只是个开始。在>>> from itertools import combinations

>>> def filterSimilar (d):

while True:

filteredOne = False

for s, t in combinations(d, 2):

if isSimilar(s, t):

d.remove(t)

filteredOne = True

break

if not filteredOne:

break

>>> d = ['asdf', 'asxf', 'foo', 'bar', 'baz']

>>> filterSimilar(d)

>>> d

['asdf', 'foo', 'bar']

isSimilar的一个可能的示例实现是使用两个字符串之间的Levenshtein距离:

^{pr2}$

(注意,我在这个例子中使用的Levenshtein距离不是传递性比较的例子)

使用compute_jaccard_index函数,isSimilar函数如下所示:def isSimilar (s, t):

return compute_jaccard_index(s, t) > .4

然后在示例数据中使用:>>> lst = [{'very','beauty','place'},{'very','good','place'},{'another','trigram','item'}]

>>> filterSimilar(lst)

>>> lst

[{'very', 'beauty', 'place'}, {'item', 'trigram', 'another'}]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值