【问题标题】:Python: What does mean it mean when my module returns "Ellipsis"?Python:当我的模块返回“省略号”时,这意味着什么?
【发布时间】:2013-07-03 21:56:01
【问题描述】:

好的,我这里有这段代码:

def andSearch(inverseIndex, query):
    pepp = set()

    for y in [inverseIndex[x] for x in query]:
        if pepp == set():
            pepp.update(y)
        else:
            pepp & y 

    return pepp

我正在尝试输入一个字典,例如:

L =  {'Cats':{1},'Dogs':{2},'Cat':{0,4},'Dog':{0,4},'Pigs':{3},'Animal':{4}}

作为输出,如果值连接并包含所有输入查询,我希望有一个显示字典值的集合,如下所示:

query =  [ 'Dog', 'Cat','Animal']     ---->    {4}
query =  [ 'Dog', 'Cat']      --->  {0,4}
query = ['Dog', 'Dogs']   ----  {}      (or set())
query = []  ----->  {}

但问题是当我尝试运行模块时,我得到了这个奇怪的输出:

>>> andSearch(L,Query)
Ellipsis

是什么原因造成的?无论输入什么都是一样的,而且不会给我错误或什么都没有,你们有没有聪明的家伙和女孩可以帮助我?

【问题讨论】:

  • 我无法重现您的结果。
  • 你得到什么结果?
  • 我得到了套装。结果不正确(因为您忽略了pepp & y 的结果)但我确实得到了集合。
  • 你需要做pepp = pepp & y,pepp & y不会更新集合。

标签: python debugging ellipsis


【解决方案1】:

我无法使用以下稍微更新和优化的代码在 Python 2 或 3 中重现您的问题:

def andSearch(inverseIndex, query):
    pepp = set()

    for y in (inverseIndex[x] for x in query):
        if not pepp:
            pepp.update(y)
        else:
            pepp &= y

    return pepp

L =  {'Cats':{1}, 'Dogs':{2}, 'Cat':{0,4}, 'Dog':{0,4}, 'Pigs':{3}, 'Animal':{4}}

for query in [['Dog', 'Cat', 'Animal'],
              ['Dog', 'Cat'],
              ['Dog', 'Dogs'],
              [],]:

    print('query = {} ----> {}'.format(query, andSearch(L, query)))

使用 Python 2.7.5 输出:

query = ['Dog', 'Cat', 'Animal'] ----> set([4])
query = ['Dog', 'Cat'] ----> set([0, 4])
query = ['Dog', 'Dogs'] ----> set([])
query = [] ----> set([])

使用 Python 3.3.2 输出:

query = ['Dog', 'Cat', 'Animal'] ----> {4}
query = ['Dog', 'Cat'] ----> {0, 4}
query = ['Dog', 'Dogs'] ----> set()
query = [] ----> set()

...所以我只能假设您的系统配置错误或出现问题。
(顺便说一句,我没有安装 'numpy' 或 scipy。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 2021-03-31
    • 2012-12-10
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 2012-10-08
    相关资源
    最近更新 更多