From 4576b3c5e8f17913628fad189e3ae5a8c8a3aa19 Mon Sep 17 00:00:00 2001 From: Crista Lopes Date: Mon, 21 Oct 2013 19:21:40 -0700 Subject: [PATCH] Better spreadsheet style, more uniform across columns --- 26-spreadsheet/tf-26.py | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/26-spreadsheet/tf-26.py b/26-spreadsheet/tf-26.py index c068d12..692d04a 100644 --- a/26-spreadsheet/tf-26.py +++ b/26-spreadsheet/tf-26.py @@ -6,28 +6,34 @@ import sys, re, itertools, operator # all_words = [(), None] stop_words = [(), None] -non_stop_words = [(), lambda w : w if w not in stop_words[0] else ''] -unique_words = [(), lambda word_list: set([w for w in word_list if w != ''])] -counts = [(), lambda w, word_list : word_list.count(w)] -sorted_data = [(), lambda z : sorted(z, key=operator.itemgetter(1), reverse=True)] +non_stop_words = [(), lambda : map(lambda w : w if w not in stop_words[0] else '', \ + all_words[0])] +unique_words = [(), lambda : set([w for w in non_stop_words[0] if w != ''])] +counts = [(), lambda : map(lambda w, word_list : word_list.count(w), \ + unique_words[0], \ + itertools.repeat(non_stop_words[0], len(unique_words[0])))] +sorted_data = [(), lambda : sorted(zip(list(unique_words[0]), counts[0]), + key=operator.itemgetter(1), reverse=True)] + +# The entire spreadsheet +all_columns = [all_words, stop_words, non_stop_words, unique_words, counts, sorted_data] # # The active procedure over the columns of data. # Call this everytime the input data changes, or periodically. # def update(): - global non_stop_words - global unique_words - global counts - global sorted_data - # Apply the formulas to the 4 last columns - non_stop_words[0] = map(non_stop_words[1], all_words[0]) - unique_words[0] = unique_words[1](non_stop_words[0]) - counts[0] = map(counts[1], unique_words[0], itertools.repeat(non_stop_words[0], len(unique_words[0]))) - sorted_data[0] = sorted_data[1](zip(list(unique_words[0]), counts[0])) + global all_columns + # Apply the formula in each column + for c in all_columns: + if c[1] != None: + c[0] = c[1]() + # +# The Main program +# + # Load the fixed data into the first 2 columns -# all_words[0] = re.findall('[a-z]{2,}', open(sys.argv[1]).read().lower()) stop_words[0] = set(open('../stop_words.txt').read().split(',')) # Update the columns with formulas