Thanks. That makes sense, just failed to notice it. Btw, I tried printing out wordDict and Python became unresponsive. Any ideas
On Wed, Jun 27, 2012 at 8:33 PM, Dave Angel <d...@davea.name> wrote: > On 06/27/2012 08:19 PM, moheem ilyas wrote: > > I am working on a problem from a book, Think Python, which I thought > would > > be fairly easy. The problem is: > > > > Exercise 11.1. Write a function that reads the words in words.txt and > > stores them as keys in a > > dictionary. It doesn’t matter what the values are. Then you can use the > in > > operator as a fast way to > > check whether a string is in the dictionary. > > > > Note: words.txt is just a huge word list file if anyone is confused about > > that > > > > Here is my failed solution: > > > > def tester(): > > fin = open('/home/moheem/Documents/words.txt', 'r') > > value = 0 > > wordDict = dict() > > for word in fin: > > wordDict[word] = value > > value = value + 1 > > > > fin.close() > > > > There seems to be a logical error. That is, when I check a key, i.e. one > of > > the words from the file, is in the dictionary, I get false. (To check, I > > use: 'aa' in wordDict). I think the problem is that the key does not > > actually get placed in the dictionary, but the question is why? > > > > > > Somehow you're thinking that the file consists only of words, and that > the for loop you've got will give you those words one at a time. It > doesn't. > > When you loop on a file that way, the lines each end in a newline > character, so you've got to strip them off before using them as keys. > > for word in fin: > word = word.rstrip() > wordDict[word] = value > value += 1 > > You could have discovered this by simply printing out wordDict > > > > > > -- > > DaveA > >
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor