On 9/4/2009 9:09 AM William Witteman said...
On Thu, Sep 03, 2009 at 11:26:35AM -0700, Emile van Sebille wrote:

Thanks to Emile for pointing out the error.  There were several other
errors - initiating the counter in the loop (d'oh!), premature sorting
of the dictionary by keys, not providing an index row for the output
file, not returning anything from my function, and probably others.

Here is how it looks now - any pointers, stylistic or otherwise, are
welcome.  It does, however, work.

That's normally when I stop looking at it. If I'm lucky, I'll never need to work on it again. If and when I do, that's when I clean it up in the area that needs attention. It's way to easy IMHO to turn one-off projects into time-sinks.

Anyway, some notes interspersed below...

Emile



#!/usr/bin/python

"""
Take a collection of lists, combine them into one list, deleting duplicates.
Sort the list and use it as the leftmost column of a table. Then put each lists contents into the table, one per column, with the elements aligned
with the leftmost (index) column.

"""

import os, sys, csv

def cmpss(filename,*sslists):
  """Write a CSV file from the collection of lists."""

  if os.path.exists(filename):
    print("%s exists: please choose another filename." % filename)
    sys.exit(1)
  else:
    try:
      fn = csv.writer(open(filename, "w"))
    except IOError:
      print("There is a problem opening the requested file.  Sorry.")
      sys.exit(1)
  toprow = [x for x in range(len(sslists))]

This looks like toprow is simply range(len(sslists))...

  toprow.insert(0, "index")
  fn.writerow(toprow)

  termdict = {}
  number_of_columns = len(sslists)

  for sslist in sslists:
    for term in sslist:
      termdict[term] = ["" for x in range(number_of_columns)]

this might also be said  [""]*number_of_columns

sortedtermlist = termdict.keys()
  sortedtermlist.sort()

  counter = 0
for sslist in sslists:
    for term in sslist:
      #debug print(counter)
      #debug print(term)
      termdict[term][counter] = term
    counter = counter + 1

  for term in sortedtermlist:
    row = [term]
    row.extend(termdict[term])
    fn.writerow(row)

  return termdict



_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to