IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

trier un dictionnaire


Sujet :

Python

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Points : 47
    Points
    47
    Par défaut trier un dictionnaire
    Bonjour.
    J'utilise python, mais je suis débutante.

    Svp, j'ai un dictionnaire, je veux le trier
    Est ce que c'est vrai que c'est impossible de le faire directement, et je dois passé par une liste ou tableau.

    Merci pour tout aide.

  2. #2
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Points : 47
    Points
    47
    Par défaut
    j'ai oublié un petit détail,
    je veux trier le dictionnaire par ordre croissants des valeurs.
    Ex: dic= {'xxxx': 24, yyyyy': 7, 'zzzzzz': 1}
    Je veux qu'il affiche {'zzzzzz': 1, yyyyy': 7,'xxxx': 24}

    Merci

  3. #3
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 916
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 916
    Points : 7 304
    Points
    7 304
    Par défaut
    Je ne suis pas sur mais il ne me semble pas que cela soit possible

    Sinon tu peux transformer ton dico en liste

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> dic
    {24: 'xxxx', 1: 'zzzzzz', 7: 'yyyyy'}
    >>> dic.items() #transforme ton dico en type list, tu pourras donc trier
    [(24, 'xxxx'), (1, 'zzzzzz'), (7, 'yyyyy')] #le resultat pour que tu comprennes
    >>> list=dic.items() #j'affecte à une variable le resultat
    >>> list.sort() #tri de la liste
    >>> list #affichage de la liste
    [(1, 'zzzzzz'), (7, 'yyyyy'), (24, 'xxxx')]

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Effectivement, il n'est pas possible de trier un dictionnaire.
    Pour trier par valeur, plutôt que par clé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> dic ={'xxxx': 24, 'yyyyy': 7, 'zzzzzz': 1}
    >>> from operator import itemgetter
    >>> l = dic.items()
    >>> l.sort(key=itemgetter(1))
    >>> l
    [('zzzzzz', 1), ('yyyyy', 7), ('xxxx', 24)]
    >>> #ou en une ligne:
    >>> sorted(dic.items(),key=itemgetter(1))
    [('zzzzzz', 1), ('yyyyy', 7), ('xxxx', 24)]

  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Points : 47
    Points
    47
    Par défaut
    Grand merci.
    ça marche trés bien.
    Et si je veux trié on ordre décroissant j'utilise quelle fonction?

  6. #6
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Points : 47
    Points
    47
    Par défaut
    J'ai trouvé, il faut modifié l'instruction comme ceci :
    l.sort(key=itemgetter(1),reverse=True)
    Merci

  7. #7
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Quelque chose comme cela devrait convenir (si le but est uniquement de faire de l'affichage):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for key in reversed(sorted(dic)):
    	print "%s: %d" % (key, dic[key])
    Thierry

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trier un dictionnaire de tuples
    Par a1331 dans le forum Général Python
    Réponses: 3
    Dernier message: 02/07/2013, 13h53
  2. [Débutant] Trier un dictionnaire
    Par renovatio34 dans le forum C#
    Réponses: 6
    Dernier message: 08/05/2012, 20h13
  3. Trier données sous forme de dictionnaire dans un fichier
    Par pinard dans le forum Général Python
    Réponses: 3
    Dernier message: 17/11/2011, 17h37
  4. [XNA]Trier les valeurs d'un dictionnaire
    Par avogadro dans le forum C#
    Réponses: 8
    Dernier message: 17/03/2010, 16h24
  5. trier un dictionnaire
    Par ekremyilmaz dans le forum Général Python
    Réponses: 5
    Dernier message: 16/10/2008, 20h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo