Ce que vous demandez est le comportement par défaut lors de la comparaison de tuples. Cependant, la réponse générique à votre question peut être:
>>> import operator
>>> li = [(1106257, (255, 255, 255)), (1, (16, 16, 118)), (1, (32, 32, 128)), (1, (48, 48, 122)), (9, (249, 249, 249)), (1, (64, 64, 126)), (406, (247, 247, 251))]
>>> li.sort(key=operator.itemgetter(0))
>>> li
[(1, (16, 16, 118)), (1, (32, 32, 128)), (1, (48, 48, 122)), (1, (64, 64, 126)),
(9, (249, 249, 249)), (406, (247, 247, 251)), (1106257, (255, 255, 255))]
Si vous souhaitez trier en fonction des colonnes autres que la première (0), modifier ce nombre. Par exemple, si vous souhaitez trier en fonction des colonnes 2 puis 1, vous devez indiquer operator.itemgetter(2, 1)
comme key
.
N'utilisez pas de fonctions de comparaison personnalisées. Ils sont lents et ne sont pas pris en charge dans Python 3. Utilisez plutôt les fonctions de touches. – adw