> I have a list of objects that generate code. Some > of them depend on others being listed first, to > satisfy dependencies of others. > > I wrote a cmp function something like this: > > def dep_cmp(ob1, ob2): > > if ob1.name in ob2.deps: > return -1 > else: > return 1 > > I also tried returning 0 when there were no dependency > relationships between the objects. > > This failed, because every object was not compared with > ever other. I imagine that this is because sort assumes > that if a > b and b > c, then a > c. In my case, this > isn't really true. If a is not dependent on b, and > b is not dependent on c, that doesn't mean that a is not > dependent on c. > > Is there a better way?
It's only meaningful to talk about sorting if your particular definition of "<" is transitive. I.e. a < b and b < c should imply a < c. If this is not satisfied, it doesn't make sense to sort according to your "<" definition. It's just not a well-defined operation and no trick will make it work. Cheers, Daniel -- Psss, psss, put it down! - http://www.cafepress.com/putitdown -- http://mail.python.org/mailman/listinfo/python-list