为什么在这里打破平等?

时间:2019-01-30 20:58:06

标签: python set spacy

我有一个函数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”……但这没关系。

0 个答案:

没有答案