Lors du tri par SQL
Select * from table Order By key1 DESC, key2 ASC
Vous pouvez spécifier l’ordre croissant / décroissant de chaque clé comme dans.
En C / C ++ etc., vous pouvez faire de même en définissant vous-même la fonction de comparaison.
int compare(const MyStruct *a, const MyStruct *b)
{
if(a->k1 == b->k1){
return b->k2 - a->k2;
}else{
return a->k1 - b->k2;
}
}
D'un autre côté, en Python, sort ne peut spécifier que la fonction clé et l'ordre croissant / décroissant de l'ensemble, alors que dois-je faire si je trie un tuple avec plusieurs éléments de cette manière?
C'était écrit dans le document officiel. https://docs.python.org/3/howto/sorting.html#sort-stability-and-complex-sorts
Sorts are guaranteed to be stable. That means that when multiple records have the same key, their original order is preserved.
This wonderful property lets you build complex sorts in a series of sorting steps. For example, to sort the student data by descending grade and then ascending age, do the age sort first and then sort again using grade
def multisort(xs, specs):
for key, reverse in reversed(specs):
xs.sort(key=lambda x: x[key], reverse=reverse)
return xs
Puisque le tri Python est un tri stable, vous pouvez trier à plusieurs reprises en spécifiant l'ordre croissant / décroissant dans l'ordre à partir de la clé avec la priorité la plus basse. Je vois!!
Recommended Posts