Partage
  • Partager sur Facebook
  • Partager sur Twitter

dictionaires

Sujet résolu
    15 septembre 2017 à 21:25:18

    Bonjour dans le cours on nous explique qu'on peut trier une liste avec la fonction sorted , la méthode sort et on utilisant la compréhension des liste
    J'ai donc essayer les deux première méthodes mais j'arrive à rien de concluant . Je voulais trier en fonctionant du chiffre et pas de la premiere lettre 
    Python 3.6.2 (v3.6.2:5fd33b5, Jul  8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32
    Type "copyright", "credits" or "license()" for more information.
    >>> 
    ============= RESTART: C:/Users/Carlos/Documents/python/liste.py =============
    >>> inventaire
    [('pommes', 22), ('melons', 4), ('poires', 18), ('fraises', 76), ('prunes', 51)]
    >>> sorted(inventaire)
    [('fraises', 76), ('melons', 4), ('poires', 18), ('pommes', 22), ('prunes', 51)]
    >>> sort.inventaire
    Traceback (most recent call last):
      File "<pyshell#2>", line 1, in <module>
        sort.inventaire
    NameError: name 'sort' is not defined
    >>> inventaire.sort()
    >>> r = inventaire.sort()
    >>> r
    >>> inventaire
    [('fraises', 76), ('melons', 4), ('poires', 18), ('pommes', 22), ('prunes', 51)]
    >>> sorted(inventaire)
    [('fraises', 76), ('melons', 4), ('poires', 18), ('pommes', 22), ('prunes', 51)]
    >>> 
     

    -
    Edité par CasteloWoshu 15 septembre 2017 à 21:27:28

    • Partager sur Facebook
    • Partager sur Twitter
      15 septembre 2017 à 21:58:34

      Je suis pas un expert en tri mais il faut utiliser les fonctions lamdba en clé:  sorted(inventaire, key=lambda colonnes: colonnes[1]) je crois bien

      -
      Edité par Coliculus 15 septembre 2017 à 23:58:39

      • Partager sur Facebook
      • Partager sur Twitter
        15 septembre 2017 à 23:07:26

        Bonjour,

        Pour information, tu peux aussi utiliser itemgetter de la lib operator pour des raisons de performances. Elle permet aussi de trier par multiples attributs (Si par exemple tu veux trier des gens par prenom, puis age, puis village par exemple, tu peux le faire facilement)

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          16 septembre 2017 à 10:49:36

          Le site connu pour cela: ICI

          Dans les 1er exemples, on voit bien que l'utilisation de sorted et pourquoi ton tri ne se passe de la manière que tu souhaites.

          La proposition de CamilleCany2  est présenté pas loin en dessous et celle de coni63 aussi.

          D'autres solutions y sont proposées si besoin de performances. Ce n'est pas le cas ici, mais c'est bon à savoir !

          Une solution pas évidente avec les comprehensions lists, pas très lisibles, mais pour information

          >>> inventaire = [('pommes', 22), ('melons', 4), ('poires', 18), ('fraises', 76), ('prunes', 51)]
          >>> 
          >>> fruits = sorted([i for i, j in inventaire], key={i:j for i, j in inventaire}.__getitem__)
          >>> fruits
          ['melons', 'poires', 'pommes', 'prunes', 'fraises']
          

          Solution qui se trouve aussi sur ce même site.

          -
          Edité par Anonyme 16 septembre 2017 à 11:00:18

          • Partager sur Facebook
          • Partager sur Twitter

          dictionaires

          × 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