慕盖茨9453107
1234567891011121314151617181920212223242526272829303132333435363738394041424344from __future__ import print_functionclass reverseindex: def __init__(self,wordfilename): self._filename=wordfilename def buildindex(self): wordfile=open(self._filename,'r') self._worddict={} for lineno,line in enumerate(wordfile): for word in line.split(): self._worddict.setdefault(word,set()).add(lineno+1) def printindex(self): for word in sorted(self._worddict): print(word+": ",end="") print(', '.join(str(lineno) for lineno in sorted(self._worddict[word]))) def execquery(self,query): if query.startswith("AND:"): self.andquery(query[4:]) elif query.startswith("OR:"): self.orquery(query[3:]) else: self.andquery(query) def andquery(self,query): first=True result=set() for word in query.split(): tmp=self._worddict.get(word,set()) if first: result=tmp first=False else: result=result&tmp if result: print(', '.join(str(lineno) for lineno in sorted(result))) else: print("None") def orquery(self,query): result=set() for word in query.split(): tmp=self._worddict.get(word,set()) result=result|tmp if result: print(', '.join(str(lineno) for lineno in sorted(result))) else: print("None")