[issue35956] Sort documentation could be improved for complex sorting

2019-02-20 Thread Raymond Hettinger


Change by Raymond Hettinger :


--
resolution:  -> not a bug
stage:  -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue35956] Sort documentation could be improved for complex sorting

2019-02-10 Thread Raymond Hettinger


Raymond Hettinger  added the comment:

It seems to me that the sorting howto covers this topic.

If I'm reading the OP's task correctly, it isn't complex at all:

   points.sort(key=attrgetter('x', 'y'))  # x is primary key; y is secondary

--
assignee: docs@python -> rhettinger
nosy: +rhettinger

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue35956] Sort documentation could be improved for complex sorting

2019-02-10 Thread Cheryl Sabella


Cheryl Sabella  added the comment:

Take a look at issue 35020 which discusses multisort.

--
nosy: +cheryl.sabella

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue35956] Sort documentation could be improved for complex sorting

2019-02-10 Thread SilentGhost


SilentGhost  added the comment:

Is this not equivalent to the following?

  sorted(points, key=lambda p: (p.y, p.x))

--
nosy: +SilentGhost

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue35956] Sort documentation could be improved for complex sorting

2019-02-10 Thread fabrice salvaire


New submission from fabrice salvaire :

I just implemented Graham Scan algorithm in Python 3 and have to read carefully 
the sort documentation.  Notice this is a good algorithm for a large audience 
language like Python.

Since Python 3, the old order function cmp is depicted as an old way to proceed.

But some sorting procedure require complex order like this

def sort_by_y(p0, p1):
return p0.x - p1.x if (p0.y == p1.y) else p0.y - p1.y
sorted(points, key=cmp_to_key(sort_by_y))

which is less natural to implement than

def sort_by_y(p0, p1):
return p0.x < p1.x if (p0.y == p1.y) else p0.y < p1.y
sorted(points, cmp=sort_by_y)

Since Python 3 we should do this

points.sort(key=attrgetter('x'))
points.sort(key=attrgetter('y'))

But we must take care to the chaining order !!! Here we must sort first on x 
then on y.

I think the documentation could explain much better how to perform complex sort 
and the performance of the Python sort algorithm.  Is the old way faster than 
the new one ???  What about short and large array ???  What happen when we sort 
a zillion of short array ???

--
assignee: docs@python
components: Documentation
messages: 335163
nosy: FabriceSalvaire, docs@python
priority: normal
severity: normal
status: open
title: Sort documentation could be improved for complex sorting
type: enhancement
versions: Python 3.7

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com