TypeErrors

Scott David Daniels Scott.Daniels at Acm.Org
Mon Mar 2 00:03:33 CET 2009


Dennis Lee Bieber wrote:
> ...  Even this looks strange, since all list will contain is a copy of
> string for each occurrence of string in the values of shelve!
> Furthermore, the only use for the key is to obtain the value -- the key
> is never returned for later use... so...
> 
> 	def lookup(self, needle):
> 		cnt = 0
> 		for hay in self.shelve.values():
> 			if hay == needle:	cnt += 1
> 		return cnt
> 
> 	No need to go through keys() (presuming the documentation of shelve
> is correct, and all dictionary methods work), and the return value is an
> integer (if one really needs a list of duplicates, then 
> 
> 	return [needle] * cnt

OK, but you could do better:

     def lookup(self, needle):
         return self.shelve.values().count(needle)

or:
     def lookup(self, needle):
         return self.shelve.values().count(needle) * [needle]

depending on the needed result (until values starts returning an
iterator).

--Scott David Daniels
Scott.Daniels at Acm.Org




More information about the Python-list mailing list