Partage
  • Partager sur Facebook
  • Partager sur Twitter

Plusieurs fonctions pour trier une liste ?

Anonyme
    23 mai 2019 à 21:17:30

    Bonjour,

    Je souhaites trier une liste selon mes propres critères et avec python 3 on n'a plus que liste.sort(key = ma_fonction) qui au lieu de vérifier si a > b vérifie si ma_fonction(a) > ma_fonction(b). Toutefois je souhaiterais dans le cas ou deux valeurs sont égales selon ma_fonction, les trier entre elles selon un autre critère comme ma_fonction_bis (et j'ai même besoin d'un troisième niveau de tri...). Je crois me souvenir l'avoir vu quelque part mais la syntaxe exacte m'échappe...

    Merci d'avance,

    • Partager sur Facebook
    • Partager sur Twitter
      23 mai 2019 à 21:36:22

      HbeoHbeo a écrit:

      Je souhaites trier une liste selon mes propres critères et avec python 3 on n'a plus que liste.sort(key = ma_fonction) qui au lieu de vérifier si a > b vérifie si ma_fonction(a) > ma_fonction(b). Toutefois je souhaiterais dans le cas ou deux valeurs sont égales selon ma_fonction, les trier entre elles selon un autre critère comme ma_fonction_bis (et j'ai même besoin d'un troisième niveau de tri...). Je crois me souvenir l'avoir vu quelque part mais la syntaxe exacte m'échappe...

      Une fonction de comparaison du genre :

      def comp(x):
          return [f1(x), f2(x)]

      Pour des comparaisons complexes, tu peux utiliser une fonction de comparaison (c'est différent du paramètre nommé key) conjointement avec le module standard functools, voir des exemples dans mon tuto sur le tri en Python.

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        23 mai 2019 à 21:46:13

        Merci beaucoup pour votre réponse rapide !
        • Partager sur Facebook
        • Partager sur Twitter

        Plusieurs fonctions pour trier une liste ?

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown