我正在使用 SequenceMatcher 来对齐两个列表。每个列表的项目是元组或整数。要求是,对于包含特定整数的元组被认为是相等的。例如:
(1, 2, 3) == 1 #True
(1, 2, 3) == 2 #True
为此,我决定重写元组的相等方法:
class CustomTuple(tuple):
def __eq__(self, other):
default_eval = super(CustomTuple, self).__eq__(other)
if default_eval is not True:
return self.__contains__(other)
return default_eval
这是我的示例数据:
x = [22, 16, 11, 16, CustomTuple((11, 19, 20)), 16]
y = [22, 16, CustomTuple((11, 19, 20)), 16, CustomTuple((11, 19, 20)), 16]
使用 SequenceMatcher,我预计比率将为 1.0(等于)。但结果如下:
>>> sm = SequenceMatcher(None, x, y)
>>> sm.ratio()
0.666666666667
但是当我尝试使用 '==' 运算符比较列表时,结果是相等的:
>>> x == y
True
谁能指出出了什么问题?谢谢。