[Tutor] Reading file and storing keys

Dave Angel d at davea.name
Thu Jun 28 02:33:56 CEST 2012

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



More information about the Tutor mailing list