1
我tryed執行以下代碼:(在python)SequenceMatcher自定義比較函數
from difflib import SequenceMatcher as sm
class myint(int):
def __cmp__(self , other):
return 0
def __eq__(self , other):
return True
a = myint(1)
b = myint(2)
c = myint(3)
d = myint(1)
e = myint(2)
f = myint(3)
x = [a,b,c]
y = [f,e,d]
q = sm(None,x,y)
就像你所看到的,在這些代碼我tryed使用自定義的比較函數,每兩個實例,使得myint是平等的。但是,當我使用SequenceMatcher于敏的TWE列出與相同長度的比較,我得到了一個unexepted結果:
>>> q.ratio()
1: 0.3333333333333333
,而不是1.0。我看到SequenceMatcher使用數字之間的常規比較而不是我的比較,儘管列表由「myint」類型的對象組成。
如何編寫myint類,以使SequenceMatcher將返回1.0,如已經顯示的那樣?
(或任何其他的想法使用自定義的比較函數SequenceMatcher)
當然如果列表ar相同的結果將是1.0。但根據我的自定義比較函數,**列表中的每個**兩個元素是相等的,所以即使y = [f,e,d],結果也應該是1.0。 –