samwyse wrote: > Scott David Daniels wrote: > >> lefts = set() >> rights = set() >> with open('sheet1', 'r') as fh: >> for line in fh: >> trimmed = line.strip() >> if trimmed: # Skip blanks (file end often looks like that) >> left, right = line.strip().split('\t') >> lefts.add(left) >> rights.add(right) >> result = lefts & rights >> >> -Scott > > > # change to however many columns may later exist > cols = [ set() for i in range(0, 2) ] > with open('sheet1', 'r') as fh: > for line in fh: > for col, data in zip(cols, line.strip().split('\t')): > col.add(data) > result = cols[0] & cols[1]
My laptop started complaining about low power before I was really finished with this last night, so I just hit Send and went to bed. The last line really should be: result = reduce(operator.and_, cols) I'll note that using 'zip' transparently deals with handling those cases where there are either more or fewer columns of data than expected. Finally, does anyone familar with P3K know how best to do the reduction without using 'reduce'? Right now, sets don't support the 'add' and 'multiply' operators, so 'sum' and (the currently ficticious) 'product' won't work at all; while 'any' and 'all' don't work as one might hope. Are there an 'intersection' and 'union' built-ins anywhere? -- http://mail.python.org/mailman/listinfo/python-list