Je tente de trier une liste de listes par chaque index de la liste interne. (Toutes les listes internes ont la même longueur.) Le but est de trier d'abord les lignes par la dernière colonne (le dernier index des listes internes), puis par la colonne/index précédent et ainsi de suite.Python- Trier une liste de listes par plusieurs index, où les listes internes peuvent inclure "Aucun"
Entrée:
[
['2016', 'E', None, '68', '94'],
['2016', 'A', None, '91', '25'],
['2016', 'C', None, '74', '25'],
['2017', 'C', None, '55', '20'],
['2015', 'D', None, '20', '14'],
['2016', 'B', None, '66', '66'],
['2017', 'E', None, '29', '41'],
['2017', 'F', None, '61', '22'],
['2015', 'A', None, '17', '96']
]
Sortie:
[
['2015', 'A', None, '17', '96'],
['2015', 'D', None, '20', '14'],
['2016', 'A', None, '91', '25'],
['2016', 'B', None, '66', '66'],
['2016', 'C', None, '74', '25'],
['2016', 'E', None, '68', '94'],
['2017', 'C', None, '55', '20'],
['2017', 'E', None, '29', '41'],
['2017', 'F', None, '61', '22']
]
je la pièce suivante de code que je suis en train d'utiliser pour cela:
def sort_table(column_count, rows)
for i in range(len(column_count) - 1, -1, -1):
rows = sorted(rows, key=operator.itemgetter(i))
return rows
Cependant, il semble être jeté par le fait qu'il existe ou peut être None
valeurs dans la liste. Je continue d'obtenir l'erreur TypeError: '<' not supported between instances of 'NoneType' and 'str'
. Y a-t-il une bonne façon de gérer cela?
https://stackoverflow.com/questions/12971631/sorting-list-by-an-attribute-that-can-be-none – Rockybilly
Il suffit d'utiliser [ 'trié'] (https://docs.python.org/dev/library/functions.html#sorted) –
@PatrickHaugh - J'utilise trié. Que devrais-je faire différemment? – ebbishop