我有一个函数f
,其定义如下:
def f(doc):
return filter(lambda ent: ..., doc.ents)
doc
是Spacy文档对象,而doc.ents
返回生成器对象。还有doc.noun_chunks
返回一个生成器对象。但是,发生了一些奇怪的事情:
>>> a = list(f(doc))
[Apple, Banana]
>>> b = list(doc.noun_chunks)
[Banana, Apple]
>>> a[0] == b[1]
True
>>> a[1] == b[0]
True
>>> set(a) == set(b)
False
>>> list(set(a))[0] == list(set(b))[1]
True
>>> list(set(a))[1] == list(set(b))[0]
True
>>> set(list(set(a))) == set(list(set(b)))
False
为什么集合相等在这里不起作用?!
P.S。我正在为使用Spacy的客户端编写应用程序,因此很遗憾,无法在此处粘贴完整的代码,也无法伪造名称“ f”,“ Apple”和“ Banana”……但这没关系。>