"Frank Millman"  wrote on 2018-12-18 in message news:...

I want to compare two tuples. They each represent a row in a database, and each element represents a column, so I will use that terminology.

I need to know if one row is greater than or less than the other. The sort sequence can be complex - one or more columns, each of which can be sorted ascending or descending.

Below is the function I have come up with. Can anyone see any problem with it, or suggest a better way to do it?


I know this is of minor interest, but I have refined my function and it looks much neater now, so I thought I would share it.

def compare(source_row, target_row, order):

   # source_row - the row I want to compare
   #                    - some sort columns could contain None
   # target_row - the row I want to compare it with
   #                    - no sort columns will contain None
   # order - a list of 2-part tuples defining the sort sequence
   #          - the column number, and True if descending else False

   LT, EQ, GT = -1, 0, 1

   for pos, desc in order:
       source_col = source_row[pos]
       target_col = target_row[pos]
       if desc:
less_than = False if source_col is None else source_col > target_col
       else:
less_than = True if source_col is None else source_col < target_col
       if less_than:
           return LT
       if new_data != col_data:
           return GT
       # must be EQ - continue with next sort column
   return EQ  # if we get here, all sort columns compare equal


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to