Greetings! On Wed, May 9, 2018 at 6:27 PM, Roger Lea Scherer <rls...@gmail.com> wrote: > Hello, again. > > I want to count words in a text file. If a word repeats I want to increase > the count by 1; if the word is new to the dictionary, I want to add the > word to the dictionary. Everything works like I would like and expect, > except for it only adds the last word of each line to the dictionary. What > am I missing? > > import string > > file_name = 'oxford.txt' > wordset = {} > with open(file_name, 'r') as f: > for line in f: > sentence = line.strip()
A small quibble: Unless you get lucky, the identifier 'sentence' is unlikely to be an actual sentence. > sentence = sentence.strip(string.punctuation) This will only remove punctuation at the beginning or the end of the line. > print(sentence) > sentence = sentence.lower() > word_list = sentence.strip() Haven't you already done this above? > word_list = word_list.split(' ') > > for i in range(len(word_list)): It is better style and more direct to write this as for word in word_list: If you need the index of the word in the word_list (as you do below) then you can use enumerate: for index, word in enumerate(word_list): > word_list[i] = word_list[i].strip(string.punctuation) > print(word_list) > > if word_list[i] in wordset: > wordset[word_list[i]] += 1 > else: > wordset[word_list[i]] = 1 > print(wordset) And here we come to the answer to the actual question you asked. Look at your indentation. Your if/else construct is not within your for loop's scope/block, so you are only checking for the last value of i, which corresponds to the last word in word_list. So, as you have written your code: with ... for line in f: ... for i in range(len(word_list)): ... if word_list[i] = ... wordset[word_list[i]] += 1 else: wordset[word_list[i]] = 1 I used "..." to replace much of your code so you can see the needed indentation levels better. HTH! -- boB _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor