好的,我这里有这段代码:
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
什么可能导致这种情况?无论输入什么都是一样的,并且不会给我错误或什么也没有,你们聪明的小伙子和女孩们能帮我吗?
最佳答案
使用以下稍微更新和优化的代码,我无法在 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”。)
关于Python:当我的模块返回 "Ellipsis"时,这意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17494932/