مقارنة القوائم في Python بواسطة Difflib Modul
سؤال
أنا أحاول خارج مكتبة Difflib.لدي قوائمان: L_1 و L_2 تحتوي على سلاسل.أريد أن أعرف، إذا كانت هذه التسلسلات مماثلة (أمر غير مهم). giveacodicetagpre. يجب أن يكون
على ما يرام.ولكن giveacodicetagpre. يجب أن لا يكون
على ما يرام.
لقد توصلت إلى فكرة التكرار خلال القائمة الأولى l_1 ومطابقة كل عنصر من عنصر l_1 بواسطة الطريقة giveacodicetagpre.
مقابل القائمة الثانية L_2.إذا كان هناك تطابق مع نسبة أكبر، فلن نقول 0.7 إزالته من L_2 والمتابعة.لكنني أشك في أنها خطة جيدة.هل هناك واحد أفضل؟
المحلول
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)
لا تنتمي إلى StackOverflow