[Tutor] IP sorting

Danny Yoo dyoo@hkn.eecs.berkeley.edu
Thu, 27 Dec 2001 12:25:06 -0800 (PST)


On Thu, 27 Dec 2001, Grimmtooth wrote:

> Okay, then plan 'B'.  Instead of a simple > < comparison, use a function to
> compare and have the function return a value based on a custom comparison
> where it first compares the TLD then the actual address octets.


You'll like this one: Python's sort() function works very similarly to C's
qsort() --- we can give sort() a 'comparison function' to make the sort do
things our way.

Once we have something like your compare() function:


> def compare(a,b)
>    for j in range(1,4): # assuming element 0 is the TLD and the
>                         # remainder are the octets
>      if int(a[j]) > int(b[j]:  # if we're sorting ascending, we need to swap
>        return(1)
>      elif int(a[j]) < int(b[j]:  # No need to swap, but don't continue
>        return(-1)
>    return(0)


Python can use this to do the sort:

    ip_addresses.sort(compare)