J'ai une liste de « ids »:Retour l'index d'une liste d'un match de fuzzywuzzy
ids = [None, '20160928a', '20160929a', ... ]
et une autre liste de certains « ids » que je trouve sont en double ids utilisant fuzzywuzzy:
repeat_offenders = ['20160928a', '20161115a', '20161121a', ... ]
Je voudrais à nouveau utiliser fuzzywuzzy pour créer une liste de listes contenant des listes d'où (par index) les identifiants dupliqués se trouvent dans la liste 'ids'. Ainsi, la sortie ressemblerait à quelque chose comme ça (et parce qu'ils sont des doublons chaque liste dans la liste contiendrait au moins deux éléments:
collected_ids = [[0,5,700], [6,3], [4,826,12]]
Ma tentative, qui retourne actuellement que les ids pas l'emplacement de l'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)
mise à jour, ma tentative d'utiliser la réponse de Moe pour trouver/groupe correspond exactement:
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
des raisons pour lesquelles vous utilisez 'fuzzywuzzy' pour trouver des doublons, si les chaînes correspondent ne pouvez-vous pas simplement tester l'égalité? –
parce que je veux regrouper des identifiants similaires car les 'doublons' peuvent ne pas être exactement (100%) les mêmes, c'est pourquoi j'ai utilisé le seuil de 95 ... mais quelques-uns des doublons sont exactement les mêmes - de sorte que l'utilisation d'un l'égalité peut être l'option la plus facile (et une assez bonne)..Est-ce que cela vous dérangerait de me montrer comment faire ce que je demande sur la base d'une égalité? Merci! –