fuzzy一个fuzzy表的返回

2024-10-03 02:43:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份“身份证”清单:

ids = [None, '20160928a', '20160929a', ... ]

我发现的另一个“id”列表是使用fuzzyfuzzy的重复id:

^{pr2}$

我想再次使用fuzzyfuzzy创建一个列表列表,其中包含重复id在列表“ids”中的位置(按索引)。因此输出将如下所示(因为它们是重复的,因此列表中的每个列表至少包含两个元素:

collected_ids = [[0,5,700], [6,3], [4,826,12]]

我的尝试,目前只返回id而不是id的位置:

collected_urls = []
for offender in repeat_offenders[:10]:
     best_match = process.extract(offender, ids)
     collection = []
     for match in best_match:
         if match[1] > 95:
            collection.append(match[0])
         else:
            pass
     collected_urls.append(collection)

更新,我尝试使用Moe的答案查找/分组精确匹配项:

idz = ids
collected_ids = []
for i in range(len(idz)):
    tmp = [i]
    for j in range(len(ids)):
        if idz[i] == idz[j] and i != j:
            tmp.append(j)
            del j 
    if len(tmp) > 1:
        collected_ids.append(tmp)
    del i

Tags: inidids列表forlenifmatch
1条回答
网友
1楼 · 发布于 2024-10-03 02:43:15

如果不必使用fuzzywuzzy,则可以使用两个for-loops检查重复项并生成{},如下所示:

collected_ids = []
for i in xrange(len(ids)):
    tmp = [i]
    for j in xrange(len(ids)):
        if ids[i] == ids[j] and i != j:
            tmp.append(j)
    if len(tmp) > 1:
        collected_ids.append(tmp)
collected_ids = list(set(collected_ids))

编辑:

如果要避免重复,可以创建一个列表来检查索引是否已添加,如下所示:

^{pr2}$

输出:

[[0, 2, 5], [3, 9], [6, 7]]

相关问题 更多 >