如何将Python中的列表与中使用imlicator的某些类进行比较



我想比较一下列表,其中包含一些在中使用连词的类。下面的代码:

class Word:
    def __init__(self, p_name):
        self.name = p_name
    def __eq__(self, other):
        return self.name == other.name
    def __str__(self):
        return "_name_: " + self.name
t1 = []
t1.append(Word("John"))     
t2 = []
t2.append(Word("John"))
if t1 in t2:
    print("the same")

我得到一个错误,"列表没有属性‘name’"。我知道我可以写一些循环,但如果在这种情况下可能的话,我想使用连词。

这:

if t1 in t2:
    print("the same")

应该是其中之一:

# Check if a single word is in t2.
w = Word("John")
if w in t2:
    print("the same")
# Check if any element of t1 is in t2.
if any(w in t2 for w in t1):
    print("the same")
# Check if all elements of t1 are in t2.
if all(w in t2 for w in t1):
    print("the same")

您不应该检查一个列表是否在另一个列表中。您可以检查某个特定项目是否在列表中,也可以将t1中的所有项目与t2中的项目进行比较。

def __eq__(self, other):
    return isinstance(other, Word) and self.name == other.name

__eq__中添加otherWord的检查也是一个好主意。因为other是一个列表而不是Word,所以您的代码会爆炸,因此other.name查找失败。

相关内容

  • 没有找到相关文章

最新更新