mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
bpo-35020: Link to sorting examples from list.sort() (GH-9931)
This commit is contained in:
parent
eeab510bb7
commit
890a4b9293
2 changed files with 14 additions and 2 deletions
|
@ -145,6 +145,17 @@ ascending *age*, do the *age* sort first and then sort again using *grade*:
|
|||
>>> sorted(s, key=attrgetter('grade'), reverse=True) # now sort on primary key, descending
|
||||
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
|
||||
|
||||
This can be abstracted out into a wrapper function that can take a list and
|
||||
tuples of field and order to sort them on multiple passes.
|
||||
|
||||
>>> def multisort(xs, specs):
|
||||
... for key, reverse in reversed(specs):
|
||||
... xs.sort(key=attrgetter(key), reverse=reverse)
|
||||
... return xs
|
||||
|
||||
>>> multisort(list(student_objects), (('grade', True), ('age', False)))
|
||||
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
|
||||
|
||||
The `Timsort <https://en.wikipedia.org/wiki/Timsort>`_ algorithm used in Python
|
||||
does multiple sorts efficiently because it can take advantage of any ordering
|
||||
already present in a dataset.
|
||||
|
@ -246,7 +257,7 @@ To convert to a key function, just wrap the old comparison function:
|
|||
|
||||
.. testsetup::
|
||||
|
||||
from functools import cmp_to_key
|
||||
>>> from functools import cmp_to_key
|
||||
|
||||
.. doctest::
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue