On 05/06/2015 21:16, Stephen Nelson-Smith wrote:
As part of my league secretary program (to which thread I shall reply again
shortly), I need to sort a list of lists.  I've worked out that I can use
sorted() and operator.itemgetter to sort by a value at a known position in
each list.  Is it possible to do this at a secondary level?  So if the
items are the same, we use the secondary key?

Current function:

def sort_table(table, col=0):
...     return sorted(table, key=operator.itemgetter(col), reverse=True)
...
sort_table(results, 6)
[['spip', 2, 2, 0, 10, 0, 4], ['hpip', 2, 0, 2, 2, 8, 0]]

S.


Asked myself the very same thing earlier today so had the answer at my fingertips, taken from https://docs.python.org/3/howto/sorting.html

<quote>
The operator module functions allow multiple levels of sorting. For example, to sort by grade then by age:

>>>
>>> sorted(student_tuples, key=itemgetter(1,2))
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]
</quote>

--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.

Mark Lawrence

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to