diff --git a/08-kick-your-teammate-forward/tf-08.py b/08-kick-your-teammate-forward/tf-08.py index a96bf50..d692e8e 100755 --- a/08-kick-your-teammate-forward/tf-08.py +++ b/08-kick-your-teammate-forward/tf-08.py @@ -4,39 +4,39 @@ import sys, re, operator, string # # The functions # -def read_file(path_to_file, func): +def read_file(path_to_file, word_freqs, func): with open(path_to_file) as f: data = f.read() - return func(data, normalize) + func(data, word_freqs, normalize) -def filter_chars(str_data, func): +def filter_chars(str_data, word_freqs, func): pattern = re.compile('[\W_]+') - return func(pattern.sub(' ', str_data), scan) + func(pattern.sub(' ', str_data), word_freqs, scan) -def normalize(str_data, func): - return func(str_data.lower(), remove_stop_words) +def normalize(str_data, word_freqs, func): + func(str_data.lower(), word_freqs, remove_stop_words) -def scan(str_data, func): - return func(str_data.split(), frequencies) +def scan(str_data, word_freqs, func): + func(str_data.split(), word_freqs, frequencies) -def remove_stop_words(word_list, func): +def remove_stop_words(word_list, word_freqs, func): with open('../stop_words.txt') as f: stop_words = f.read().split(',') # add single-letter words stop_words.extend(list(string.ascii_lowercase)) - return func([w for w in word_list if not w in stop_words], sort) + func([w for w in word_list if not w in stop_words], word_freqs, sort) -def frequencies(word_list, func): - word_freqs = {} +def frequencies(word_list, word_freqs, func): + wf = {} for w in word_list: - if w in word_freqs: - word_freqs[w] += 1 + if w in wf: + wf[w] += 1 else: - word_freqs[w] = 1 - return func(word_freqs, no_op) + wf[w] = 1 + func(wf, word_freqs, no_op) -def sort(word_freq, func): - return func(sorted(word_freq.iteritems(), key=operator.itemgetter(1), reverse=True), None) +def sort(wf, word_freqs, func): + word_freqs.extend(func(sorted(wf.iteritems(), key=operator.itemgetter(1), reverse=True), None)) def no_op(a, func): return a @@ -44,7 +44,8 @@ def no_op(a, func): # # The main function # -word_freqs = read_file(sys.argv[1], filter_chars) +word_freqs = [] +read_file(sys.argv[1], word_freqs, filter_chars) for (w, c) in word_freqs[0:25]: print w, ' - ', c