"Natural" use of cmp= in sort

Paddy paddy3118 at gmail.com
Mon Nov 10 21:03:07 EST 2014


On Monday, 10 November 2014 19:44:39 UTC, Ian  wrote:
> On Mon, Nov 10, 2014 at 12:19 PM, Peter Otten <xxx at yyy> wrote:
> > I'm not sure this works. I tried:
> 
> Here's a simpler failure case.
> 
> >>> ineq = """f2 > f3
> ... f3 > f1"""
> 
> [Previously posted code elided]
> 
> >>> greater_thans
> set([('f3', 'f1'), ('f2', 'f3')])
> >>> sorted(all_f, cmp=lambda t1, t2: 0 if t1==t2 else
> ...             (1 if (t1, t2) not in greater_thans else -1))
> ['f1', 'f2', 'f3']
> 
> Note that the greater_thans set is missing the implication by
> transitivity that f2 > f1, so the given cmp function would
> inconsistently return -1 for both comparisons cmp('f1', 'f2') and
> cmp('f2', 'f1').

Thanks. I will look into this...



More information about the Python-list mailing list