Frage

Ich versuche die Difflib-Bibliothek aus.Ich habe zwei Listen: L_1 und L_2 mit Saiten.Ich möchte wissen, ob diese Sequenzen ähnlich sind (Ordnung ist nicht wichtig). generasacodicetagpre.

sollte in Ordnung sein.Aber generasacodicetagpre.

sollte nicht in Ordnung sein.

Ich kam mit der Idee, über die erste Liste L_1 zu iteratieren und mit jedem Element von L_1 von der Methode anzugleichen generasacodicetagpre.

gegen die zweite Liste l_2.Wenn es ein Match mit einem Verhältnis größer war, sagen wir, sagen wir 0.7 von L_2 entfernen und fahren Sie fort.Aber ich bezweifle, dass es ein guter Plan ist.Gibt es ein besseres?

War es hilfreich?

Lösung

I would do something like:

import difflib

L_1 = ["Bob", "Mary", "Hans"]
L_2 = ["Bob", "Marie", "Hans"]

def similiarity(L_1, L_2):
    L_1 = set(intern(w) for w in L_1)
    L_2 = set(intern(w) for w in L_2)

    to_match = L_1.difference( L_2)
    against = L_2.difference(L_1)
    for w in to_match:
        res = difflib.get_close_matches(w, against)
        if len(res):
            against.remove( res[0] )
    return (len(L_2)-len(against)) / (len(L_1))

print similiarity(L_1,L_2)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top